我怎样才能获得懒惰的阵列 Ruby?
我怎样才能获得懒惰的阵列 Ruby?
在 Haskell 我可以谈谈
, 这是一个无穷无尽的列表,根据需要懒惰。 我也可以做这样的事情 , 作为
, 这适用于我给他创建懒惰列表的任何功能。 在这种情况下,他会给我所有偶数。
我相信我可以做这样的事情 Ruby, 但似乎我无法理解如何做到这一点。
在 Haskell 我可以谈谈
[1..]
, 这是一个无穷无尽的列表,根据需要懒惰。 我也可以做这样的事情 , 作为
iterate /+2/ 0
, 这适用于我给他创建懒惰列表的任何功能。 在这种情况下,他会给我所有偶数。
我相信我可以做这样的事情 Ruby, 但似乎我无法理解如何做到这一点。
没有找到相关结果
已邀请:
8 个回复
窦买办
赞同来自:
另外,这是一个很好的技巧:
但是,此方法仅适用于连续值。
莫问
赞同来自:
特别是:
不会立即进行评估。
结果,它拒绝了令人令人愉快的:: Lazy的实例,这可以进一步懒惰。 如果您想获得实际结果,请使用
,
/
现在也懒惰,使用
或者
/等等。
如果您想了解有关此主题的更多信息和我的补丁C-在博客中看到我的帖子
http://blog.railsware.com/2012 ... lazy/
八刀丁二
赞同来自:
懒散的范围 /偶数/:
/0..Inf/.step/2/.take/5/ #=> [0, 2, 4, 6, 8]
请注意,您也可以扩展
用一些方法与懒人一起工作 /等等/ 更舒适:
更多信息在这里:
http://banisterfiend.wordpress ... ruby/
/
还有实施 lazy_map 和 lazy_select 上课
, 可以在这里找到哪个:
http://www.michaelharrison.ws/weblog/?p=163
帅驴
赞同来自:
您可以查看懒惰功能的内核及其在这里使用..
http://www.ruby-doc.org/core-2 ... .html
https://github.com/yhara/enumerable-lazy
http://shugomaeda.blogspot.in/ ... .html
詹大官人
赞同来自:
使用 Enumerable 相反,它可以在某些情况下良好工作,但与一些时刻的懒惰列表不同:这样的方法 map 和 filter, 不会被衡量懒惰 /因此,他们无法无休止地列出/, 而且计算一度的元素不保存,因此,如果您向元素吸引两次,则计算两次。
如果您需要懒惰列表的确切行为 haskell 在 ruby, 有 lazylist
http://flori.github.com/lazylist/
它实现了懒惰的列表。
卫东
赞同来自:
它将是无限的循环,两次快速:
只有你想要它,它只会去无限 /导致调度器/.
冰洋
赞同来自:
[].lazy
/ 或枚举返回所列模块中迭代器的值的枚举器 /例如, Each_slice-
[].each_slice/2/.lazy
/. 请注意,在列出的模块中,某些实例方法返回更多的原始值,例如 true 或者 false, 一些返回集合,如数组和一些返回枚举器。 如果未指定单位,则返回枚举器。
但在我们的示例课程中 IO 也有迭代器 each_line, 返回枚举器,因此可以使用 "lazy". inumerator的返回中最美丽的是它实际上没有加载集合 /例如,一个大的数组/ 记住它的工作原理。 相反,它有一个指向集合的指针,然后描述算法 /例如 ,
/, 当您想要处理收集时,他将用于此集合
, 例如。
因此,如果您与枚举器一起工作以进行巨大的性能 boost, 现在你可以附上 lazy 给调度器。 因此,而不是整理整个集合以适应这种情况:
你可以打电话 lazy:
如果我们扫描第一个文本文件 5 然后一旦找到 5 巧合,无需继续执行。 因此,列出了任何类型的物体的懒惰的力量。
诸葛浮云
赞同来自:
它有所帮助吗?