Я недавно столкнулся с кодом, который похож на это:
next {
'foo' => bar,
'foobar' => anotherbar,
}
Сначала это похоже на простой хеш, но нет никакого присвоения на затем. Затем в этом случае похож на зарезервированное ключевое слово Ruby. Что делает этот код?
next похоже на ключевое слово continue в семействе языков c, за исключением того, что в ruby оно заставляет итератор перемещаться к следующей итерации. Поскольку блоки всегда имеют какое-то возвращаемое значение, вы можете передать одно в качестве аргумента следующему.
next обычно используется в таких случаях, как итерация по списку файлов и выполнение (или нет) действия в зависимости от имени файла.
next может принимать значение, которое будет значением, возвращаемым для текущей итерации блока.
sizes = [0,1,2,3,4].map do |n|
next("big") if n > 2
puts "Small number detected!"
"small"
end
p sizes
Output:
Small number detected!
Small number detected!
Small number detected!
["small", "small", "small", "big", "big"]