方法的返回值我有这个类:迭代器(array.each),如红宝石
class MyArray
attr_accessor :data
def initialize(my_object = nil)
@data = Array[*my_object]
end
def <<(y)
@data << y
end
def each
@data.each
end
end
,我使用它像这样
subject = MyArray.new([2, 5, 3]) d = [] subject.each { |i| d << i }
的问题是,它不会通过-subject.each-遍历一次。我应该怎么做才能返回数组中的“每个”值作为方法的返回值?如何返回迭代器本身?
我尝试这样做,它不是工作压力太大:
def each [2,5,3].each end
感谢 “meagar” 和 “埃里克Allik” 我们有正确的答案:(只有“DEF各“方法已经改变)
class MyArray
attr_accessor :data
def initialize(my_object = nil)
@data = Array[*my_object]
end
def <<(y)
@data << y
end
def each(&block)
@data.each(&block)
end
end
您应该编辑您的问题,包括你的'initialize'方法。你可能认为应该很明显你有一个正确的构造函数,但是在SO中存在很多类似的问题,其中海报的问题在于屏外代码(或者在没有代码的情况下),特别是当海报是Ruby新手时。 –
好点,我编辑它 – libik
请注意,你可以用'def initialize(my_object = nil)@data = Array [* my_object] end'替换你的构造函数。这样,'my_object'可以是除set(array,hash,range),字符串,proc或不可变对象(integer,float,true,false,nil)之外的任何集合。其他?眼镜为强大的图示! –