Ruby - 每个起始偏移量

Kap*_*h M 19 ruby

如何each在ruby中设置循环的起始偏移量?我希望循环从而a[3]不是开始a[0].我该怎么设置?

a = [ab, cd, ef, gh, hi, jk]

a.each do |i|
#some stuff
end
Run Code Online (Sandbox Code Playgroud)

Nik*_* B. 41

另一种可能更直接和可读的可能性是使用Array#drop:

a.drop(3).each do |i|
  # do something with item i
end
Run Code Online (Sandbox Code Playgroud)

现在,如果与继承自的其他方法相结合,这真的很闪耀Enumerable,所以很有可能是你的命令each循环的更好的替代方案.假设您要过滤提取的切片并在之后进行转换:

a = [0,1,2,3,4,5,6,7]
a.drop(3).select(&:even?).map { |x| x * 2 }
# => [8, 12]
Run Code Online (Sandbox Code Playgroud)

或者说您要打印所有值的列表:

a = ["1", "2", "3", "4", "5"]
puts a.drop(3).join("\n")
Run Code Online (Sandbox Code Playgroud)

输出:

4
5
Run Code Online (Sandbox Code Playgroud)

继承自函数式编程的这些特性使Ruby如此强大:)


Bal*_*ick 21

使用each一个子部分的数组.在下面的示例中,从第四个元素到结尾:

a[3..-1].each do |i|
  #some stuff
end
Run Code Online (Sandbox Code Playgroud)