Ruby блок
Вы уже знаете, как Ruby определяет методы и как вы вызываете методы. Аналогично, в Ruby есть понятие блоков.
- Блок состоит из фрагментов кода.
- Вам нужно дать блоку имя.
- Код в блоке всегда заключён в фигурные скобки {}.
- Блоки всегда вызываются из функций с тем же именем. Это означает, что если имя вашего блока —test, то вы должны использовать функциюtest, чтобы вызвать этот блок.
- Вы можете использовать операторyield, чтобы вызвать блок.
Синтаксис
Здесь вы узнаете, как использовать простой операторyieldдля вызова блока. Вы также узнаете, как использовать операторyieldс параметрами для вызова блока. В примерах вы увидите эти два типаyieldинструкциях.
yieldStatements
Давайте рассмотрим пример оператора yield:
Пример
Попробуйте »
Вывод приведенного выше примера:
在 test 方法内 你在块内 你又回到了 test 方法内 你在块内
Вы также можете передать инструкцию yield с параметрами. Вот пример:
Пример
Попробуйте »
Вывод приведенного выше примера:
你在块 5 内 在 test 方法内 你在块 100 内
Здесь,yieldинструкция сопровождается параметрами. Вы даже можете передать несколько параметров. В блоке можно разместить переменную между двумя вертикальными чертами, чтобы принимать параметры. Следовательно, в приведённом выше коде инструкция yield 5 передаёт значение 5 в блок test как параметр.
Теперь посмотрите на следующую инструкцию:
Здесь значение 5 принимается в переменной i. Теперь обратите внимание на следующую инструкцию puts:
Вывод этой инструкции puts:
Если вы хотите передать несколько параметров, тоyieldинструкция выглядит следующим образом:
На этом этапе блок выглядит следующим образом:
Параметры разделяются запятыми.
Блоки и методы
Вы видели, как блоки и методы связаны друг с другом. Обычно вы используете оператор yield, чтобы вызвать блок из метода с тем же именем. Поэтому код выглядит следующим образом:
Пример
Этот пример — самый простой способ реализовать блок. Вы используетеyieldинструкцию, чтобы вызвать блок test.
Однако если перед последним параметром метода стоит &, то вы можете передать блок этому методу, и этот блок может быть присвоен последнему параметру. Если * и & встречаются вместе в списке параметров, & должен быть размещён после.
Вывод приведенного выше примера:
Hello World!
Блоки BEGIN и END
Каждый исходный файл Ruby может объявить блок кода, который будет выполнен при загрузке файла (блок BEGIN), и блок кода, который будет выполнен после завершения выполнения программы (блок END).
Пример
Программа может содержать несколько блоков BEGIN и END. Блоки BEGIN выполняются в порядке их появления. Блоки END выполняются в обратном порядке их появления. При выполнении вышеуказанная программа выводит следующий результат:
BEGIN 代码块 MAIN 代码块 END 代码块Другие расширения