Ключевые слова языка 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.