什么是写这段代码的惯用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