gpt4 book ai didi

ruby - Ruby 方法能否作为迭代器产生或根据上下文返回数组?

转载 作者:数据小太阳 更新时间:2023-10-29 06:44:50 25 4
gpt4 key购买 nike

我在 Ruby 中有一个任意方法可以产生多个值,因此可以将其传递给一个 block :

def arbitrary
yield 1
yield 2
yield 3
yield 4
end

arbitrary { |x| puts x }

我想修改此方法,以便在没有 block 的情况下,它仅将值作为数组返回。所以这个构造也可以工作:

myarray = arbitrary
p a -----> [1, 2, 3, 4, 5]

这在 Ruby 中可行吗?

最佳答案

def arbitrary
values = [1,2,3,4]
return values unless block_given?
values.each { |val| yield(val) }
end
arbitrary { |x| puts x }
arbitrary

关于ruby - Ruby 方法能否作为迭代器产生或根据上下文返回数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1050430/

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