首页 > 解决方案 > 是否可以在 map 中使用 while 或任意迭代器?

问题描述

i = 0

while i < 10 do
  i += 1
end

有没有办法让它发出值 [1..10]?

例如:

ary = while (i < 10).map do

标签: rubyiterator

解决方案


有没有办法让它发出值?
我想使用while[...]

我怀疑我是否理解你为什么要while在 ruby​​ 中使用,但是是的,如果你包装while到一个Enumerator实例中,这是可能的。

Enumerator.new do |y|
  i = 0
  while i < 10 do
    i += 1
    y << i
  end
end.map { |i| i ** 2 }
#⇒ [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

推荐阅读