Каков этот синтаксис Ruby?

Я недавно столкнулся с кодом, который похож на это:

 next {
          'foo'         => bar,
          'foobar'      => anotherbar,
      }

Сначала это похоже на простой хеш, но нет никакого присвоения на затем. Затем в этом случае похож на зарезервированное ключевое слово Ruby. Что делает этот код?

8
задан randombits 20 July 2010 в 03:49
поделиться

1 ответ

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"]

из http://ruby-doc.org/docs/keywords/1.9/

14
ответ дан 5 December 2019 в 12:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: