ruby – 如何使用枚举器
在
Ruby Array Class文档中,我经常发现:
为什么我不将块传递给#map?我的做法有什么用: [1,2,3,4].map 而不是做: [1,4].map{ |e| e * 10 } # => [10,20,30,40] 有人能告诉我一个使用这个枚举器的非常实用的例子吗? 解决方法
在核心库(Array,Hash)和标准库(Set,SortedSet)中,Enumerator和大多数其他数据结构之间的主要区别在于Enumerator可以是无限的.你不能拥有所有偶数的数组或零流或所有素数,但你绝对可以有这样一个枚举器:
evens = Enumerator.new do |y| i = -2 y << i += 2 while true end evens.take(10) # => [0,4,6,8,10,12,14,16,18] zeroes = [0].cycle zeroes.take(10) # => [0,0] 那么,你可以用这样的枚举器做什么?好吧,三件事,基本上. > Enumerator混合使用Enumerable.因此,您可以使用所有Enumerable方法,例如map,inject,all?,any?,none ?,select,reject等等.请注意,枚举器可能是无限的,而map会返回一个数组,因此尝试映射无限的枚举器可能会创建一个无限大的数组并占用无限的时间. ?例如,无限范围:(1..1.0 / 0) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |