我的问题是:我希望能够获取一个匿名数组,遍历它并在迭代器块内部找出当前元素的索引。
例如,我试图只输出每三个元素。
["foo", "bar", "baz", "bang", "bamph", "foobar", "Hello, Sailor!"].each do |elem|
if index_of(elem) % 3 == 0 then
puts elem
end
end
(其中index_of
是一个不存在的方法,在这里用作占位符来展示我尝试做的事情)
理论上输出应该是:
foo
bang
Hello, Sailor!
当我命名数组时,这非常简单。但是当它是匿名的时候,我不能很好地按名称引用数组。我尝试过使用self.find_index(elem)
以及self.index(elem)
,但都失败并出现错误:NoMethodError: undefined method '(find_)index' for main:Object
这样做的正确方法是什么?
答案 0 :(得分:2)
arr = ["foo", "bar", "baz", "bang", "bamph", "foobar", "Hello, Sailor!"]
arr.each_with_index do |elem, index|
puts elem if index % 3 == 0
end
答案 1 :(得分:1)
另一种方式:
arr = ["foo", "bar", "baz", "bang", "bamph", "foobar", "Hello, Sailor!"]
arr.each_slice(3) { |a| puts a.first }
#=> foo
# bang
# Hello, Sailor!