5.11. Встроенные функции в Ruby
ДЛЯ НОВИЧКОВНЕ ДЛЯ НОВИЧКОВНЕ ОБЯЗАТЕЛЬНОВ РАЗРАБОТКЕ
Разработчику
Архитектору
Встроенные функции в Ruby
Ruby предоставляет набор методов верхнего уровня через модуль Kernel, включённый в класс Object. Эти методы доступны в любой точке программы без явного указания получателя. Справочник охватывает ключевые методы, часто используемые как встроенные функции.
Ввод и вывод
| Метод | Назначение | Пример |
|---|
puts | Выводит аргументы с добавлением символа новой строки после каждого | puts "Привет", "Мир" |
print | Выводит аргументы без добавления символов новой строки | print "Загрузка..." |
gets | Считывает строку из стандартного ввода до символа новой строки | name = gets.chomp |
putc | Выводит один символ по его коду ASCII или объекту символа | putc 65 |
printf | Форматированный вывод по шаблону, аналогичный C | printf "Цена: %.2f руб.", 19.99 |
sprintf | Возвращает отформатированную строку без вывода | text = sprintf "%04d", 7 |
Управление выполнением программы
| Метод | Назначение | Пример |
|---|
exit | Завершает программу с указанным кодом возврата | exit 0 |
abort | Завершает программу с сообщением об ошибке в stderr | abort "Файл не найден" |
raise | Генерирует исключение указанного типа | raise ArgumentError, "Неверный параметр" |
fail | Синоним метода raise | fail "Ошибка подключения" |
sleep | Приостанавливает выполнение на заданное количество секунд | sleep 2.5 |
loop | Бесконечный цикл, прерываемый через break | loop { break if ready? } |
caller | Возвращает массив строк с информацией о стеке вызовов | puts caller.first |
Создание объектов и преобразование типов
| Метод | Назначение | Пример |
|---|
Array | Преобразует аргумент в массив | Array(1) #=> [1] |
Hash | Преобразует аргумент в хэш | Hash([[:a, 1]]) #=> {:a=>1} |
String | Преобразует аргумент в строку через to_s | String(42) #=> "42" |
Integer | Преобразует аргумент в целое число | Integer("100") #=> 100 |
Float | Преобразует аргумент в число с плавающей точкой | Float("3.14") #=> 3.14 |
Complex | Создаёт комплексное число | Complex(1, 2) #=> (1+2i) |
Rational | Создаёт рациональное число | Rational(2, 3) #=> (2/3) |
proc | Создаёт объект Proc из блока | p = proc { |x| x * 2 } |
lambda | Создаёт лямбда-функцию с строгой проверкой аргументов | l = lambda { |x| x + 1 } |
Проверка объектов
| Метод | Назначение | Пример |
|---|
nil? | Проверяет, является ли объект nil | value.nil? |
defined? | Проверяет существование имени или выражения | defined?(x) |
respond_to? | Проверяет, поддерживает ли объект указанный метод | obj.respond_to?(:save) |
instance_of? | Проверяет точное совпадение класса объекта | obj.instance_of?(String) |
is_a? | Проверяет принадлежность объекта к классу или его предкам | obj.is_a?(Enumerable) |
kind_of? | Синоним метода is_a? | obj.kind_of?(Array) |
Работа с переменными и объектами
| Метод | Назначение | Пример |
|---|
object_id | Возвращает уникальный идентификатор объекта | :symbol.object_id |
clone | Создаёт неполную копию объекта | copy = original.clone |
dup | Создаёт поверхностную копию объекта | copy = original.dup |
freeze | Делает объект неизменяемым | str.freeze |
frozen? | Проверяет, является ли объект неизменяемым | str.frozen? |
send | Вызывает метод по имени, переданному как символ или строка | obj.send(:method_name, arg) |
public_send | Безопасный вариант send, вызывающий только публичные методы | obj.public_send(:info) |
method | Возвращает объект Method для последующего вызова | m = obj.method(:size); m.call |
Отладка и интроспекция
| Метод | Назначение | Пример |
|---|
p | Выводит объект через inspect для отладки | p [1, 2, 3] |
pp | Красиво форматированный вывод сложных структур (требует require 'pp') | pp hash |
warn | Выводит предупреждение в stderr | warn "Устаревший метод" |
caller_locations | Возвращает массив объектов Thread::Backtrace::Location | caller_locations(1, 3) |
binding | Возвращает объект привязки текущего контекста | eval("x + 1", binding) |
Работа с окружением
| Метод | Назначение | Пример |
|---|
ENV | Хэш-подобный доступ к переменным окружения | ENV["HOME"] |
Dir.pwd | Возвращает текущую рабочую директорию | Dir.pwd |
Dir.chdir | Изменяет текущую рабочую директорию | Dir.chdir("/tmp") |
ARGV | Массив аргументов командной строки | ARGV[0] |
RUBY_VERSION | Строка с версией интерпретатора Ruby | RUBY_VERSION |
RUBY_PLATFORM | Строка с информацией о платформе | RUBY_PLATFORM |
Методы коллекций верхнего уровня
| Метод | Назначение | Пример |
|---|
Array#empty? | Проверяет, пуст ли массив | [].empty? #=> true |
Hash#empty? | Проверяет, пуст ли хэш | {}.empty? #=> true |
String#empty? | Проверяет, пуста ли строка | "".empty? #=> true |
Array#size | Возвращает количество элементов массива | [1, 2, 3].size #=> 3 |
Array#length | Синоним метода size для массивов | [1, 2].length #=> 2 |
Array#include? | Проверяет наличие элемента в массиве | [1, 2, 3].include?(2) #=> true |