5.11. Ключевые слова в Ruby
ДЛЯ НОВИЧКОВНЕ ДЛЯ НОВИЧКОВНЕ ОБЯЗАТЕЛЬНОВ РАЗРАБОТКЕ
Разработчику
Архитектору
Ключевые слова в Ruby
Ruby использует зарезервированные слова для построения синтаксических конструкций. Все ключевые слова являются неизменяемыми элементами языка и не могут использоваться в качестве идентификаторов переменных, методов или классов.
Условные конструкции
| Ключевое слово | Значение | Пример |
|---|
if | Выполняет блок кода при истинности условия | if temperature > 30<br> puts "Жарко" |
unless | Выполняет блок кода при ложности условия | unless logged_in?<br> redirect_to_login |
elsif | Дополнительное условие внутри конструкции if | if x > 0<br> puts "Положительное"<br>elsif x < 0<br> puts "Отрицательное" |
else | Блок кода для выполнения при невыполнении условий | if valid?<br> save<br>else<br> show_error |
case | Оператор множественного выбора | case status<br>when 200 then "OK"<br>when 404 then "Not Found" |
when | Ветка выбора внутри конструкции case | case fruit<br>when "apple" then make_juice |
then | Разделитель условия и тела в однострочных конструкциях | if ready? then start_process |
Циклы и итерации
| Ключевое слово | Значение | Пример |
|---|
while | Повторяет блок кода пока условие истинно | while i < 10<br> puts i<br> i += 1 |
until | Повторяет блок кода пока условие ложно | until file.ready?<br> sleep(1) |
for | Цикл перебора элементов коллекции | for item in collection<br> process(item) |
in | Оператор привязки переменной в цикле for | for user in users |
do | Начало блока кода в циклах и итераторах | 5.times do |i|<br> puts i<br>end |
break | Прерывание выполнения цикла или итератора | loop do<br> break if condition_met? |
next | Переход к следующей итерации цикла | items.each do |item|<br> next if item.invalid?<br> process(item) |
redo | Повтор текущей итерации без изменения состояния | retry_count = 0<br>begin<br> operation<br>rescue<br> retry_count += 1<br> redo if retry_count < 3 |
retry | Повтор выполнения блока begin после обработки исключения | begin<br> fetch_data<br>rescue NetworkError<br> reconnect<br> retry |
Определение структур
| Ключевое слово | Значение | Пример |
|---|
class | Объявление нового класса | class User<br> def initialize(name)<br> @name = name<br> end<br>end |
module | Объявление модуля для группировки функционала | module MathUtils<br> PI = 3.14159<br>end |
def | Объявление метода | def calculate_total<br> @price * @quantity<br>end |
end | Завершение блочной конструкции | def hello<br> puts "Hi"<br>end |
alias | Создание альтернативного имени для метода | alias_method :full_name, :name |
undef | Отмена определения метода | undef :dangerous_method |
Возврат и делегирование
| Ключевое слово | Значение | Пример |
|---|
return | Возврат значения из метода | def status<br> return "active" if online?<br> "offline"<br>end |
yield | Вызов переданного блока кода | def with_logging<br> puts "Start"<br> yield<br> puts "End"<br>end |
super | Вызов метода родительского класса | def initialize(name)<br> super<br> @custom_field = name<br>end |
self | Ссылка на текущий объект или класс | def self.create(params)<br> new(params)<br>end |
Обработка исключений
| Ключевое слово | Значение | Пример |
|---|
begin | Начало блока кода с возможными исключениями | begin<br> risky_operation<br>rescue StandardError => e<br> log_error(e)<br>end |
rescue | Обработка перехваченного исключения | begin<br> File.open(path)<br>rescue Errno::ENOENT<br> create_default_file |
ensure | Блок кода, выполняемый в любом случае | file = open(path)<br>begin<br> process(file)<br>ensure<br> file.close<br>end |
Логические операторы
| Ключевое слово | Значение | Пример |
|---|
and | Логическое И с низким приоритетом | save_record and send_notification |
or | Логическое ИЛИ с низким приоритетом | load_cache or fetch_from_api |
not | Логическое отрицание | if not expired?<br> use_token |
Специальные значения
| Ключевое слово | Значение | Пример |
|---|
nil | Отсутствие значения, пустая ссылка | user = find_user(id)<br>return if user.nil? |
true | Логическая истина | active = true |
false | Логическая ложь | disabled = false |
defined? | Проверка существования переменной или метода | if defined?(User)<br> puts "Класс загружен" |
Системные ключевые слова
| Ключевое слово | Значение | Пример |
|---|
BEGIN | Блок кода, выполняемый до основной программы | BEGIN {<br> setup_environment<br>} |
END | Блок кода, выполняемый после основной программы | END {<br> cleanup_resources<br>} |
Псевдопеременные
| Ключевое слово | Значение | Пример |
|---|
__FILE__ | Имя текущего файла исходного кода | puts "Загружен файл: #{__FILE__}" |
__LINE__ | Номер текущей строки в файле | log "#{__FILE__}:#{__LINE__} - Ошибка" |
__ENCODING__ | Кодировка текущего файла | puts "Кодировка: #{__ENCODING__}" |
Ключевые слова BEGIN и END пишутся заглавными буквами и отличаются от методов begin и end. Конструкции and, or, not имеют более низкий приоритет по сравнению с операторами &&, ||, !, что влияет на порядок вычисления выражений. Ключевое слово in используется исключительно в контексте цикла for и сопоставления с образцом в современных версиях Ruby.