如何在迭代时获取Array中的元素索引?

时间:2017-05-02 18:24:36

标签: arrays ruby

我想在ruby类Array中添加一个方法。迭代时是否可以引用数组及其索引?

例如,我想创建一个方法来打印数组元素及其索引。

array = [:a, :b, :c]

array.print_elements_with_indexes
# => a 1, b 2, c 3

2 个答案:

答案 0 :(得分:1)

您可以使用self.<any-array-method>,其中一个方法是size,您可以使用该方法创建一个范围来迭代每个数组元素。

class Array
  def do_something
    (0...self.size).each do |index|
        puts "Index #{index} value is #{self.at(index)}"
    end
  end
end

[1, 2, 3, 4].do_something

或者,您也可以使用Ruby的Enumerable#each_with_index,如下所示:

class Array
  def do_something
    self.each_with_index do |index, value|
        puts "Index #{index} value is #{value}"
    end
  end
end

[1, 2, 3, 4].do_something

答案 1 :(得分:0)

class Array
  def print_first
    puts first # same as `self.first`, or `self[0]`
  end
end

[1, 2, 3, 4].print_first # prints 1

如果你在一个类的范围内,定义一个实例方法,方法调用将首先解决self,这使得self.在这种情况下是可选的。