我想將數組細分爲數組對。Ruby使用each_slice.to_a
例如:["A","B","C","D"]
應該變成[["A","B"],["C","D"]
。
我相信我通過做arg.each_slice(2).to_a
成功了。 但是,如果我然後在新陣列上做arg.length
,我仍然得到4. 我期望得到2(在上面的例子中)。
最後,我想能夠將arg
的第一個元素設爲["A","B"]
,但目前我仍然得到"A"
。
我想將數組細分爲數組對。Ruby使用each_slice.to_a
例如:["A","B","C","D"]
應該變成[["A","B"],["C","D"]
。
我相信我通過做arg.each_slice(2).to_a
成功了。 但是,如果我然後在新陣列上做arg.length
,我仍然得到4. 我期望得到2(在上面的例子中)。
最後,我想能夠將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"]
感謝您提供快速有效的回覆。在您的幫助下,我能夠迅速確定我的錯誤。 – Jglstewart
很高興爲您提供幫助。如果有幫助,你能接受答案嗎? – Flexoid
如果你可以把一些問題的答案作爲編輯來解決,那將會很棒。這有700多個觀點,並且相當混亂。 – ghayes
嘗試
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」]
工作正常
什麼是你用確切的代碼? '[1,2,3,4] .each_slice(2).to_a.length'讓我回到2。你是否重新分配了這些值? – Makoto