gpt4 book ai didi

ruby - 使对象的行为类似于 ruby​​ 中并行分配的数组

转载 作者:数据小太阳 更新时间:2023-10-29 07:12:33 24 4
gpt4 key购买 nike

假设您在 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#to_ary的区别在于#to_a是用来尝试转换一个给定的对象到一个数组,而 #to_ary 是可用的,如果我们可以把给定的对象当作一个数组。这是一个细微的差别。

关于ruby - 使对象的行为类似于 ruby​​ 中并行分配的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/766712/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com