4
A
回答
10
是的,这是可能的。
[1,2,3,4,5,6].reverse_each.each_cons(3) { |before, current, next_|
p [before, current, next_]
}
打印
[6, 5, 4]
[5, 4, 3]
[4, 3, 2]
[3, 2, 1]
([nil]+[1,2,3,4,5,6]+[nil]).reverse_each.each_cons(3) { |before, current, next_|
p [before, current, next_]
}
打印
[nil, 6, 5]
[6, 5, 4]
[5, 4, 3]
[4, 3, 2]
[3, 2, 1]
[2, 1, nil]
2
这可能会为你工作:
class Array
alias :old_each :each
def each
reverse.old_each {|e| yield e}
end
end
a = [1,2,3]
a.each {|e| print "#{e} "} # => 3 2 1
请注意,您必须小心,因为数组,出于效率的原因,重载一些枚举方法,而不使用each
。
我和我以前的老板一起在一个大项目中使用了它,在我离开之前加入它。男孩,我很高兴离开那里。
编辑:刚刚发生,我认为我可以在上面提到的项目改善了这一点:
def each
if rand(1000) == 500
reverse.old_each {|e| yield e}
else
old_each {|e| yield e}
end
end
相关问题
- 1. 红宝石短阵迭代
- 2. 迭代一个YAML阵列红宝石
- 3. 反向散列红宝石
- 4. 红宝石组合与阵列元素
- 5. 红宝石阵列内部
- 6. 红宝石:在阵列
- 7. 阵列中的红宝石
- 8. 红宝石阵列打印
- 9. 红宝石阵列麻烦
- 10. 红宝石阵列平等
- 11. 红宝石阵列
- 12. 红宝石阵列散列键
- 13. 红宝石阵列切片
- 14. 完成红宝石阵列
- 15. 红宝石:迭代计算
- 16. 红宝石块迭代
- 17. 访问红宝石迭代
- 18. 红宝石定制迭代
- 19. 添加元素到红宝石阵列返回新阵列
- 20. 红宝石通过散列迭代
- 21. 红宝石阵列reverse_each_with_index
- 22. 红宝石:反向,变异列表
- 23. 两个红宝石阵列
- 24. 红宝石包括检查和迭代
- 25. 红宝石做循环和迭代
- 26. 红宝石阵列换行
- 27. 红宝石 - 创建三角阵列
- 28. 红宝石阵列,[]操作
- 29. 在阵列红宝石
- 30. 迭代通过红宝石哈希阵列
很好的解释.. –
我有一个字与@Arup。他现在熟悉“代码炸弹”这个词。 –