配列を配列のペアに分割しようとしています。
例:["A","B","C","D"]
になる必要があり[["A","B"],["C","D"]
ます。
することで成功したと思いますarg.each_slice(2).to_a
。しかしarg.length
、新しい配列で実行すると、まだ 4 になります。(上記の例では) 2 になると予想しています。
arg
最後に、 to beの最初の要素を呼び出せるようにしたいのです["A","B"]
が、現時点ではまだ"A"
.
array = ["A", "B", "C", "D"]
array
=> ["A", "B", "C", "D"]
array.each_slice(2).to_a
=> [["A", "B"], ["C", "D"]]
array.each_slice(2).to_a.length
=> 2
array.each_slice(2).to_a
元の が変更されることを期待しているかもしれませんが、Ruby のほとんどのように非破壊的なメソッドであるためarray
、ここでは新しいArray
オブジェクトが作成されます。each_slice
new_array = array.each_slice(2).to_a
new_array
=> [["A", "B"], ["C", "D"]]
new_array[0]
=> ["A", "B"]
試す
arg = arg.each_slice(2).to_a
インスタンスの状態を変更するRubyメソッドでは、通常 !
、最後にあります。例えば
hash1.merge!(hash2)
これを試して
1.9.2p180 :015 > ['A', 'B', 'C', 'D'].each_slice(2).to_a[0]
=> [「A」、「B」]
正常に動作します