ruby – 将枚举器转换为惰性枚举器

前端之家收集整理的这篇文章主要介绍了ruby – 将枚举器转换为惰性枚举器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
可以像这样使用 Enumerator::Lazy.new将枚举器转换为惰性枚举器(这是一个示例;在开始时,我已经有一个枚举器,而不是一个数组):
xs_enum = [1,2,3].to_enum
# => #<Enumerator: [1,3]:each>
xs_lazy_enum = Enumerator::Lazy.new(xs_enum,&:yield)
# => #<Enumerator::Lazy: #<Enumerator: [1,3]:each>:each>
xs_lazy_enum.force
# => [1,3]

有更简洁的方法吗?

解决方法

关于什么:
[1,3].to_enum.lazy
# => #<Enumerator::Lazy: ...>

Indeed,but the problem is that I start from an enumerator,not from an array

这不会改变任何事情:

enum = (1..10).each
# => #<Enumerator: ...>
enum.lazy
# => #<Enumerator::Lazy: ...>

可枚举#to_enum返回一个枚举器.如果将一个调用链接到Enumerable #lazy,则第二个消息的接收者是第一个调用返回的Enumerator.

猜你在找的Ruby相关文章