Ruby 不带集合的枚举器

Ruby 不带集合的枚举器,ruby,enumerator,Ruby,Enumerator,我遇到过这样的情况: Enumerator.new(&:map) 不知道怎么用 确保这是有效代码,并返回枚举器,但它没有任何要枚举的集合 如何将集合馈送到此枚举器?使用当前设置,您无法将任何集合传递给它。一旦实例化,就不能更改枚举数的集合 当前代码之所以有效,是因为不会立即执行is块,因此在尝试开始迭代(或检索项)时会看到错误 如果要从集合中创建枚举器,最简单的方法是调用每个,而不使用块。其他方法,如map也可以创建没有给定块的枚举数 enumerator = [1, 2, 3].ea

我遇到过这样的情况:

Enumerator.new(&:map)
不知道怎么用

确保这是有效代码,并返回枚举器,但它没有任何要枚举的集合


如何将集合馈送到此枚举器?

使用当前设置,您无法将任何集合传递给它。一旦实例化,就不能更改枚举数的集合

当前代码之所以有效,是因为不会立即执行is块,因此在尝试开始迭代(或检索项)时会看到错误

如果要从集合中创建枚举器,最简单的方法是调用
每个
,而不使用块。其他方法,如
map
也可以创建没有给定块的枚举数

enumerator = [1, 2, 3].each
#=> #<Enumerator: [1, 2, 3]:each>

使用当前设置,您无法向其传递任何集合。一旦实例化,就不能更改枚举数的集合

当前代码之所以有效,是因为不会立即执行is块,因此在尝试开始迭代(或检索项)时会看到错误

如果要从集合中创建枚举器,最简单的方法是调用
每个
,而不使用块。其他方法,如
map
也可以创建没有给定块的枚举数

enumerator = [1, 2, 3].each
#=> #<Enumerator: [1, 2, 3]:each>

我不知道你为什么要这么做。集合几乎总是扩展枚举器,枚举器提供了each、map、collect、select等。我不确定您想用它做什么。您可能会发现ruby文档很有用:@AJFaraday Close,我猜您的意思是集合几乎总是不包含。在调用某些没有块的方法时,大多数情况下它们都会转换为枚举数。像
每一个
地图
和许多其他的。我不知道你为什么要这样做。集合几乎总是扩展枚举器,枚举器提供了each、map、collect、select等。我不确定您想用它做什么。您可能会发现ruby文档很有用:@AJFaraday Close,我猜您的意思是集合几乎总是不包含。在调用某些没有块的方法时,大多数情况下它们都会转换为枚举数。像
每一个
地图
和许多其他的。
enumerator = [1, 2, 3].each
#=> #<Enumerator: [1, 2, 3]:each>
enumerator = Enumerator.new { |yielder| [1, 2, 3].each { |number| yielder << number } }
# assuming both the collection and block are passed by the user
map = :map.to_proc
result = map.call(collection, &block)

# which is equivalent to
result = collection.map(&block)