我试图在不使用reverse方法的情况下反转Enumerable(如Array),但使用reverse_each迭代器.
我希望,以下代码就足够了:
p [1,2,3].reverse_each {|v| v }
Run Code Online (Sandbox Code Playgroud)
但是块不会以反向的方式返回数组.我当然可以写
[1,2,3].reverse_each {|v| p v }
Run Code Online (Sandbox Code Playgroud)
但我想以第一种方式收集物品.如果这种行为是什么来源,我应该如何编写表达式以满足要求?
tok*_*and 22
从1.8.7开始,Enumerable#each_*方法在没有提供块时返回枚举器,因此现在可以在纯表达式中使用那些原始命令方法.
因此,如果您想收集项目,请使用Enumerable#map该枚举器:
reversed_values = [1, 2, 3].reverse_each.map { |x| 2*x }
#=> [6, 4, 2]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5764 次 |
| 最近记录: |