"abc def ".split(" ")
возвращается
["abc", "def"]
Таким образом, я ожидал:
["a", "b", "c", " ", "d", "e", "f", " "].split(" ")
вернуться
[["a", "b", "c"], ["d", "e", "f"]]
но он вернулся
[["a", "b", "c"], ["d", "e", "f"], []]
Я прочитал исходный код, выполняя разделение в active_support/core_ext/array/grouping.rb (я использую ActiveSupport 4.0.0 с ruby 2.0.0-p247). Вы можете найти 2 строки документа здесь: http://api.rubyonrails.org/classes/Array.html#method-i-split и код выглядит следующим образом:
def split(value = nil, &block)
inject([[]]) do |results, element|
if block && block.call(element) || value == element
results << []
else
results.last << element
end
results
end
end
Это объясняет, как происходит расщепление.
Итак, это предполагаемое поведение или это ошибка ActiveSupport?