我正在尝试将数组细分为数组对。
例如:["A","B","C","D"]
应该变成[["A","B"],["C","D"]
.
我相信我已经成功了arg.each_slice(2).to_a
。但是,如果我要arg.length
在新数组上做,我仍然会得到 4。我希望得到 2(在上面的例子中)。
最后,我希望能够调用 to 的第一个元素,arg
但["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
会改变你原来的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
在改变那里实例状态的红宝石方法中,通常 !
在最后。例如
hash1.merge!(hash2)
试试这个
1.9.2p180 :015 > ['A', 'B', 'C', 'D'].each_slice(2).to_a[0]
=> [“A”,“B”]
工作正常