"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 で分割を行うソース コードを読みました (Ruby 2.0.0-p247 で ActiveSupport 4.0.0 を使用しています)。ここで 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 のバグですか?