Ruby 方法 each 允许你遍历项目列表,而不必跟踪迭代次数,或者不必增加某种计数器。
这是 Ruby 的“重复直到完成”的方式。
在你可以使用之前 each,你需要一组项目,如数组、范围或散列
每一个方法都有一个hash
hash = { bacon: 300, coconut: 200 }
hash.each { |key,value| puts "#{key} price is #{value}" }
如果你想使用 each 散列,你需要两个参数,一个用于 key& 另一个用于 value.
其余的语法是一样的,你仍然需要一个块。
如何使用索引
如果你想使用 each 但你需要索引号。
你可以使用 each_with_index 方法:
animals = ["cat", "dog", "tiger"]
animals.each_with_index { |animal, idx| puts "We have a #{animal} with index #{idx}" }
这允许你在访问当前索引的同时遍历数组。
请记住,索引从 0 开始。
时代循环
10.times { puts "hello" }
10.times { |i| puts "hello #{i}" }
这里的关键是小 |i| 东西,顺便说一下,它可以是任何有效的变量名。它不一定是 |i|。它可能是 |n| 或 |foo|,或 |bacon|……
这只是一个名字!
如果你熟悉 methods,这 |n| 就像一个方法参数。
换句话说,它只是一个变量,它成为我们 times 循环每次迭代的当前值。
范围循环
在使用该 times 方法时,它从 0 开始计数。
如果你想以不同的数字开头,这可能有点不方便。
你可以使用范围和 each 方法来更好地控制开始和结束数字
(1..10).each { |i| puts i }