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

标签 ruby arrays iterator methods return-value

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

相关文章:

ruby - 通过 HTTP 流式传输控制台输出(使用 Ruby)

Ruby 正则表达式返回 ""与 nil

java - 迭代器在调用 .next() 后抛出 illegalstateexception

java - 使用来自不同 Iterator/Iterable 的值创建 Iterable

ruby - 有效_json? checkin ruby 不起作用

ruby-on-rails - 我可以在使用 Active Record 时将 ID 更改为字符串吗?

javascript - 使用 lodash 在集合中进行通配符搜索

c++ - C 标记化字符串

c - Sizeof 返回不正确的数组长度

C++ 流迭代器