Что это за синтаксис Ruby? - PullRequest
8 голосов
/ 20 июля 2010

Я недавно столкнулся с кодом, который выглядит следующим образом:

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

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

1 Ответ

14 голосов
/ 20 июля 2010

next аналогично ключевому слову continue в семействе языков c, за исключением того, что в ruby ​​он перемещает итератор к следующей итерации.Поскольку у блоков всегда есть какое-то возвращаемое значение, вы можете передать его в качестве аргумента следующему.

next обычно используется в случаях, таких как перебор списка файлов и выполнение действий (или нет) в зависимости отfilename.

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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...