我在 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/