我想在ruby类Array中添加一个方法。迭代时是否可以引用数组及其索引?
例如,我想创建一个方法来打印数组元素及其索引。
array = [:a, :b, :c]
array.print_elements_with_indexes
# => a 1, b 2, c 3
答案 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.
在这种情况下是可选的。