什麼是寫這段代碼的慣用Ruby方式?迭代數組中的每個元素(第一個元素除外)
給定一個數組,我想遍歷該數組的每個元素,但跳過第一個元素。我想在不分配新數組的情況下執行此操作。
以下是我提出的兩種方法,但都不覺得特別優雅。
這工作,但似乎太冗長:
arr.each_with_index do |elem, i|
next if i.zero? # skip the first
...
end
這工作,但分配一個新的數組:
arr[1..-1].each { ... }
編輯/澄清:我想避免分配第二陣列。最初我說我想避免「複製」陣列,這是令人困惑的。
你的第二個不會使數組的副本。 – sawa 2015-04-03 01:38:09
@sawa它不會複製數組本身,但它會創建一個新的數組,除了第一個元素外,每個'Array#[]'上的文檔都會被創建。我誤解了這個要求嗎? – 2015-04-03 02:41:21
我同意你的評估。其他兩個選項僅使用索引:'(1 ... arr.size).each {| i | .... ref arr [i] ...}'或一個標誌:'first = true; arr.each {| e |如果第一個; first = false;下一個;結束; ''。 – 2015-04-03 03:05:57