Перейти к основному содержимому

5.11. Ключевые слова в Ruby

Разработчику Архитектору

Ключевые слова в Ruby

Ruby использует зарезервированные слова для построения синтаксических конструкций. Все ключевые слова являются неизменяемыми элементами языка и не могут использоваться в качестве идентификаторов переменных, методов или классов.

Условные конструкции

Ключевое словоЗначениеПример
ifВыполняет блок кода при истинности условияif temperature > 30<br> puts "Жарко"
unlessВыполняет блок кода при ложности условияunless logged_in?<br> redirect_to_login
elsifДополнительное условие внутри конструкции ifif 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Ветка выбора внутри конструкции casecase 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Оператор привязки переменной в цикле forfor 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.