在Ruby中,返回“可枚举”是什么意思
发布时间:2020-12-17 02:23:57 所属栏目:百科 来源:网络整理
导读:我试图理解以下 Ruby代码: digits.each_with_index.inject(0) do |decimal,(digit,index)| decimal + digit * 2**index end (作为参考,digits是一种返回数组的方法,其中每个元素都是一个整数). 令我困惑的代码部分是.each_with_index.inject(0).我知道each_
我试图理解以下
Ruby代码:
digits.each_with_index.inject(0) do |decimal,(digit,index)| decimal + digit * 2**index end (作为参考,digits是一种返回数组的方法,其中每个元素都是一个整数). 令我困惑的代码部分是.each_with_index.inject(0).我知道each_with_index方法的作用,我知道注入方法的作用,但我不确定两者的链接是如何工作的.到底发生了什么? 我试着查看each_with_index的文档,我猜我遇到问题的部分如下:“如果没有给出块,则返回一个枚举器.” 我想这一切归结为什么是一个普查员? 解决方法
Enumerator抽象了枚举的概念,以便您可以使用所有方便的Enumerable方法,而无需关心底层数据结构是什么.
例如,您可以使用枚举器来创建一个类似于无限数组的对象: squares = Enumerator.new do |yielder| x = 1 loop do yielder << x ** 2 x += 1 end end squares.take(10) # [1,4,9,16,25,36,49,64,81,100] squares.count # don't wait up for this one! 关于枚举器的一个很酷的事情是它们本身是可枚举的,如果你不给它们一个块,大多数Enumerable方法都会返回枚举器.这是允许您链接方法调用以获取一个大枚举器的原因. 这是我如何编码each_with_index,以便它可以很好地链接: class Array def my_each_with_index &blk e = Enumerator.new do |yielder| i = 0 each do |x| yielder << [x,i] i += 1 end end return e unless blk e.each(&blk) end end [3,2,1].my_each_with_index { |x,i| puts "#{i}: #{x}" } # 0: 3 # 1: 2 # 3: 1 首先,我们创建一个枚举器,描述如何枚举索引.如果没有给出块,我们只返回枚举器.否则,我们告诉枚举器使用块枚举(每个人都做了). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – LINQ查询(Group BY)?
- (泛化,实现,依赖,关联(聚合,组合))
- reactos编译成功
- React Native实战(二):Android的打包
- Render Pipeline & 光照渲染路径
- ruby-on-rails – Ruby DEPRECATION警告:您正在使用将在Ra
- String字符串、以及正则表达式
- react-native – null不是React Native组件中的对象(评估’
- objective-c – 将应用程序提交到使用BWToolkit的App Store
- Oracle user_contraints表的constraint_type列中的字母代码