假设您在 Ruby 中执行此操作:
ar = [1, 2]
x, y = ar
然后,x == 1 且 y == 2。是否有一种方法可以在我自己的类中定义,从而产生相同的效果?例如
rb = AllYourCode.new
x, y = rb
到目前为止,我对这样的赋值所能做的就是使 x == rb 且 y = nil。 Python有一个这样的特性:
>>> class Foo:
... def __iter__(self):
... return iter([1,2])
...
>>> x, y = Foo()
>>> x
1
>>> y
2
是的。定义#to_ary
。这将使您的对象被视为分配的数组。
irb> o = Object.new
=> #<Object:0x3556ec>
irb> def o.to_ary
[1, 2]
end
=> nil
irb> x, y = o
=> [1,2]
irb> x
#=> 1
irb> y
#=> 2
和...之间的不同#to_a
and #to_ary
就是它#to_a
用于尝试转换
给定对象到数组,而#to_ary
如果我们可以将给定对象视为数组,则可用。这是一个微妙的区别。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)