2
"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 のバグですか?

4

1 に答える 1