自学Python的自我,我参加了以Java教授的计算机科学课程。我注意到for循环是每种语言的黄金标准。然而,尽管遍历该网站和其他教程,但是for循环却无处可寻,尽管它是用Ruby编写的,而且(在我看来)它是非常直接且众所周知的语法。 for循环怎么了?
由于Ruby提供了多种完成任务的方法,因此哪种循环最流行,为什么?
Ruby是不寻常的,因为您确实从未使用过for
。总有更好的工具来完成这项工作。例如:
n.times do |i|
# for (i = 0; i < n; ++i) in other languages
end
10.upto(20) do |i|
# for (i = 10; i < 20; ++i) in other languages
end
a = [ 1, 2, 4, 8, 16 ]
a.each do |v|
# for (v in a) in other languages
end
a = [ 1, 2, 4, 8, 16 ]
a.map do |v|
# .map(v => ...) in JavaScript
end
Enumerable模块是Ruby强大功能的源泉,因为它可用于Hash,Array和其他事物,以及可以轻松转换为这些事物的事物,这是一个更大的选项列表。
用其他语言解决的一个复杂问题通常是在Ruby中进行一些简单的转换,而在for
循环中却没有。
Enumerable方法的一个重要特性是它们通常会发出Enumerator,可用于将操作链接在一起,如下所示:
10.upto(20).with_index.map do |i, j|
# Provides pairs like [ 10, 0 ], [ 11, 1 ], etc.
i + j
end
同时提供值,索引以及将其转换或组合为后续结果的方法,该结果本身可以被迭代,更改或以其他方式转换。