Учебники

Ruby — встроенные функции

Поскольку модуль Kernel включен в класс Object , его методы доступны везде в программе Ruby. Они могут быть вызваны без получателя (функциональная форма). Поэтому их часто называют функциями.

выкинуть

Завершает программу. Если возникает исключение (т. Е. $! Not nil), отображается его сообщение об ошибке.

Array (объект)

Возвращает obj после преобразования его в массив, используя to_ary или to_a.

at_exit {…}

Регистрирует блок для выполнения при выходе из программы. Аналогичен оператору END, но оператор END регистрирует блок только один раз.

автозагрузка (имя класса, файл)

Регистрирует имя класса класса для загрузки из файла при первом использовании. имя класса может быть строкой или символом.

переплет

Возвращает текущую переменную и привязки метода. Возвращаемый объект Binding может быть передан методу eval в качестве второго аргумента.

block_given?

Возвращает true, если метод был вызван с блоком .

callcc {| с | …}

Передает объект продолжения c в блок и выполняет блок. callcc может использоваться для глобального выхода или конструкции цикла.

звонящий ([n])

Возвращает текущий стек выполнения в массиве строк в файле формы : строка . Если указано n, возвращает записи стека с n-го уровня вниз.

поймать (тег) {…}

Ловит нелокальный выход броском, вызванным во время выполнения его блока.

chomp ([rs = $ /])

Возвращает значение переменной $ _ с удаленным завершающим символом новой строки, присваивая результат обратно $ _. Значение строки новой строки можно указать с помощью rs.

chomp! ([rs = $ /])

Удаляет символ новой строки из $ _, изменяя строку на месте.

нарубить

Возвращает значение $ _ с последним удаленным последним символом (один байт), присваивая результат обратно $ _.

рубить!

Удаляет последний символ из $ _, изменяя строку на месте.

eval (str [, scope [, file, line]])

Выполняет str как код Ruby. Привязка для выполнения оценки может быть указана с областью действия . Имя файла и номер строки кода, подлежащего компиляции, могут быть указаны с использованием файла и строки.

exec (cmd [, arg …])

Заменяет текущий процесс, выполнив команду cmd . Если указано несколько аргументов, команда выполняется без расширения оболочки.

выход ([результат = 0])

Выход из программы с результатом в качестве возвращенного кода состояния.

выход! ([результат = 0])

Убивает программу в обход обработки выхода, такой как обеспечение и т. Д.

потерпеть поражение(…)

Смотрите поднять (…)

Float (объект)

Возвращает obj после преобразования его в число с плавающей точкой. Числовые объекты конвертируются напрямую; ноль преобразуется в 0,0; строки конвертируются с учетом префикса 0x, 0b radix. Остальные конвертируются с использованием obj.to_f.

вилка

fork {…}

Создает дочерний процесс. nil возвращается в дочернем процессе, а ID дочернего процесса (целое число) возвращается в родительском процессе. Если указан блок, он запускается в дочернем процессе.

формат (fmt [, arg …])

Смотрите спринтф.

получает ([rs = $ /])

Считывает имя файла, указанное в командной строке или одну строку из стандартного ввода. Строка разделителя записей может быть указана явно с помощью rs.

global_variables

Возвращает массив имен глобальных переменных.

gsub (x, y)

gsub (x) {…}

Заменяет все строки, соответствующие x в $ _, на y. Если указан блок, совпадающие строки заменяются результатом блока. Измененный результат присваивается $ _.

gsub! (x, y)

gsub! (x) {…}

Выполняет ту же замену, что и gsub, за исключением того, что строка изменяется на месте.

Целое число (объект)

Возвращает obj после преобразования его в целое число. Числовые объекты конвертируются напрямую; ноль преобразуется в 0; строки конвертируются с учетом префикса 0x, 0b radix. Остальные конвертируются с использованием obj.to_i.

лямбда {| х | …}

proc {| х | …}

лямбда

процедура

Преобразует блок в объект Proc . Если блок не указан, блок, связанный с вызывающим методом, преобразуется.

загрузить (file [, private = false])

Загружает Ruby-программу из файла . В отличие от require , он не загружает библиотеки расширений. Если для private установлено значение true , программа загружается в анонимный модуль, тем самым защищая пространство имен вызывающей программы.

local_variables

Возвращает массив имен локальных переменных.

цикл {…}

Повторяет блок кода.

open (путь [, mode = «r»])

open (путь [, mode = «r»]) {| е | …}

Открывает файл . Если указан блок, блок выполняется с открытым потоком, переданным в качестве аргумента. Файл закрывается автоматически при выходе из блока. Если путь начинается с канала |, следующая команда запускается как команда, и возвращается поток, связанный с этим процессом.

р (объект)

Отображает obj, используя метод inspect (часто используется для отладки).

печать ([arg …])

Печатает arg в $ defout . Если аргументы не указаны, выводится значение $ _.

printf (fmt [, arg …])

Форматирует arg в соответствии с fmt, используя sprintf, и выводит результат в $ defout . Для получения более подробной информации о форматировании см. Sprintf.

proc {| х | …}

процедура

Смотри лямду.

putc (c)

Выводит один символ на вывод по умолчанию ( $ defout ).

ставит ([стр])

Выводит строку на вывод по умолчанию ( $ defout ). Если строка не заканчивается новой строкой, новая строка добавляется к строке.

поднять (…)

потерпеть поражение(…)

Возникает исключение. Предполагает RuntimeError, если класс исключений не указан. Вызов рейса без аргументов в предложении спасения повторно вызывает исключение. Если сделать это вне условия восстановления, возникает RuntimeError без сообщений . fail — устаревшее имя для рейза.

ранд ([макс = 0])

Генерирует псевдослучайное число, большее или равное 0 и меньшее, чем макс. Если max либо не указано, либо установлено в 0, случайное число возвращается как число с плавающей запятой, большее или равное 0 и меньшее 1. srand может использоваться для инициализации псевдослучайного потока.

readline ([rs = $ /])

Эквивалент get, за исключением того, что он вызывает исключение EOFError при чтении EOF.

читать строки ([rs = $ /])

Возвращает массив строк, содержащих либо имена файлов, указанные в качестве аргументов командной строки, либо содержимое стандартного ввода.

требовать (lib)

Загружает библиотеку (включая библиотеки расширений) lib при первом ее вызове. require не будет загружать одну и ту же библиотеку более одного раза. Если расширение не указано в lib , require пытается добавить к нему .rb, .so и т. Д.

сканирование (пере)

scan (re) {| x | …}

Эквивалент $ _. Scan.

выберите (читает [, пишет = ноль [, исключает = ноль [, время ожидания = ноль]]])

Проверяет изменения состояния трех типов ввода-вывода объектов ввода-вывода и исключений, которые передаются как массивы объектов ввода-вывода. nil передается для аргументов, которые не нуждаются в проверке. Возвращается трехэлементный массив, содержащий массивы объектов ввода-вывода, для которых произошли изменения в состоянии. ноль возвращается по таймауту.

set_trace_func (proc)

Устанавливает обработчик для трассировки. proc может быть строкой или объектом proc . set_trace_func используется отладчиком и профилировщиком.

сон ([сек])

Приостанавливает выполнение программы на секунды. Если sec не указан, программа приостанавливается навсегда.

разделить ([sep [, max]])

Эквивалент $ _. Split.

sprintf (fmt [, arg …])

формат (fmt [, arg …])

Возвращает строку, в которой arg отформатирован в соответствии с fmt. Спецификации форматирования в основном такие же, как и для sprintf в языке программирования C. Спецификаторы преобразования (% с последующим указателем поля преобразования) в fmt заменяются форматированной строкой соответствующего аргумента. Список поданных конверсий приведен ниже в следующем разделе.

сранд ([семя])

Инициализирует массив случайных чисел. Если seed не указан, инициализация выполняется с использованием времени и другой системной информации для seed.

Строка (объект)

Возвращает obj после преобразования его в строку, используя obj.to_s.

системный вызов (sys [, arg …])

Вызывает функцию вызова операционной системы, указанную номером sys . Числа и значение sys зависят от системы.

система (cmd [, arg …])

Выполняет cmd как вызов командной строки. Если указано несколько аргументов, команда запускается напрямую без расширения оболочки. Возвращает true, если возвращаемый статус равен 0 (успех).

sub (x, y)

sub (x) {…}

Заменяет первую строку, соответствующую x в $ _, на y. Если указан блок, совпадающие строки заменяются результатом блока. Измененный результат присваивается $ _.

sub! (x, y)

sub! (x) {…}

Выполняет ту же замену, что и sub, за исключением того, что строка изменяется на месте.

тест (тест, f1 [, f2])

Выполняет различные файловые тесты, указанные символьным тестом . Чтобы улучшить читабельность, вы должны использовать методы класса File (например, File :: readable?), А не эту функцию. Список аргументов приведен ниже в следующем разделе.

бросить (тег [, значение = ноль])

Переходит к функции catch, ожидающей с символом или строковым тегом . значение — это возвращаемое значение, которое будет использовано catch .

trace_var (var, cmd)

trace_var (var) {…}

Устанавливает трассировку для глобальной переменной. Имя переменной указывается в виде символа. cmd может быть строкой или объектом Proc.

ловушка (сиг, смд)

ловушка (сиг) {…}

Устанавливает обработчик сигнала. sig может быть строкой (например, SIGUSR1) или целым числом. SIG может быть опущен в имени сигнала. Обработчик сигнала для сигнала EXIT или сигнала номер 0 вызывается непосредственно перед завершением процесса.

untrace_var (var [, cmd])

Удаляет трассировку для глобальной переменной. Если указан cmd , удаляется только эта команда.

Функции для чисел

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

Live Demo

#!/usr/bin/ruby

num = 12.40
puts num.floor      # 12
puts num + 10       # 22.40
puts num.integer?   # false  as num is a float.

Это даст следующий результат —

12
22.4
false

n + num

n — num

n * num

н / д

Выполняет арифметические операции: сложение, вычитание, умножение и деление.

N% Num

Возвращает модуль n.

N ** Num

Возведение.

n.abs

Возвращает абсолютное значение n.

n.ceil

Возвращает наименьшее целое число, большее или равное n.

n.coerce (num)

Возвращает массив, содержащий num и n, оба, возможно, преобразованные в тип, который позволяет им работать друг с другом. Используется в автоматическом преобразовании типов в числовых операторах.

n.divmod (число)

Возвращает массив, содержащий частное и модуль от деления n на num.

n.floor

Возвращает наибольшее целое число, меньшее или равное n.

n.integer?

Возвращает true, если n является целым числом.

n.modulo (число)

Возвращает модуль, полученный делением n на num и округлением частного с полом

n.nonzero?

Возвращает n, если оно не равно нулю, иначе nil.

n.remainder (num)

Возвращает остаток, полученный делением n на num и удалением десятичных дробей из частного. Результат и n всегда имеют один и тот же знак.

n.round

Возвращает n, округленное до ближайшего целого числа.

n.truncate

Возвращает n как целое число с удаленными десятичными знаками.

n.zero?

Возвращает ноль, если n равно 0.

N & Num

п | Num

N ^ Num

Побитовые операции: И, ИЛИ, XOR и инверсия.

n << num

n >> num

Побитовое смещение влево и вправо.

п [число]

Возвращает значение num- го бита из младшего значащего бита, которое равно n [0].

n.chr

Возвращает строку, содержащую символ для кода символа n .

n.next

n.succ

Возвращает следующее целое число после n. Эквивалентно n + 1.

n.size

Возвращает количество байтов в машинном представлении n .

n.step (до, шаг) {| n | …}

Итерирует блок от n до вверх , увеличивая шаг за шагом каждый раз.

n.times {| n | …}

Повторяет блок n раз.

n.to_f

Преобразует n в число с плавающей запятой. Преобразование с плавающей запятой может потерять точность информации.

n.to_int

Возвращает n после преобразования в целое число.

Функции для Float

Float :: induced_from (Num)

Возвращает результат преобразования num в число с плавающей точкой.

f.finite?

Возвращает true, если f не бесконечно, а f.nan равно false.

f.infinite?

Возвращает 1, если f — положительная бесконечность, -1, если отрицательная бесконечность, или ноль, если что-либо еще.

f.nan?

Возвращает true, если f не является действительным числом IEEE с плавающей запятой.

Функции по математике

atan2 (x, y)

Рассчитывает арктангенс.

потому что (х)

Рассчитывает косинус х.

опыт (х)

Вычисляет экспоненциальную функцию (е возведена в степень х).

frexp (x)

Возвращает двухэлементный массив, содержащий номинированную дробь и показатель степени x.

ldexp (x, exp)

Возвращает значение x, умноженное на 2, до степени exp.

журнал (х)

Вычисляет натуральный логарифм х.

log10 (x)

Вычисляет основание 10 логарифм х.

грех (х)

Вычисляет синус х.

sqrt (x)

Возвращает квадратный корень из х. х должен быть положительным.

загар (х)

Вычисляет тангенс х.

Спецификатор поля конверсии

Функция sprintf (fmt [, arg …]) и format (fmt [, arg …]) возвращает строку, в которой arg отформатирован в соответствии с fmt. Спецификации форматирования в основном такие же, как и для sprintf в языке программирования C. Спецификаторы преобразования (% с последующим указателем поля преобразования) в fmt заменяются форматированной строкой соответствующего аргумента.

б

Двоичное целое число

с

Одиночный персонаж

д, я

Десятичное целое

е

Экспоненциальная запись (например, 2.44e6)

Е

Экспоненциальная запись (например, 2.44E6)

е

Число с плавающей точкой (например, 2,44)

г

используйте% e, если показатель степени меньше -4, в противном случае% f

г

используйте% E, если показатель степени меньше -4, в противном случае% f

о

Восьмеричное целое

s

Строка или любой объект, преобразованный с использованием to_s

U

Десятичное целое без знака

Икс

Шестнадцатеричное целое число (например, 39ff)

Икс

Шестнадцатеричное целое число (например, 39FF)

Ниже приведен пример использования —

Это даст следующий результат —

Функция test (test, f1 [, f2]) выполняет один из следующих файловых тестов, определенных символьным тестом . Чтобы улучшить читабельность, вы должны использовать методы класса File (например, File :: readable?), А не эту функцию.

F1 читается по эффективному идентификатору вызывающего абонента?

? ш

Доступен ли для записи f1 эффективный идентификатор вызывающей стороны?

?Икс

Выполняется ли f1 эффективным uid вызывающего абонента?

? о

F1 принадлежит эффективному uid вызывающего абонента?

F1 читается реальным идентификатором вызывающего абонента?

? W

Является ли f1 доступным для записи истинным идентификатором вызывающей стороны?

?ИКС

Выполняется ли f1 с помощью действительного идентификатора вызывающей стороны?

? O

F1 принадлежит реальному идентификатору вызывающего абонента?

? е

F1 существует?

? г

F1 имеет нулевую длину?

? s

Размер файла f1 (ноль, если 0)

? е

Является ли f1 обычным файлом?

? д

Является ли f1 каталогом?

? л

Является ли символ f1 символической ссылкой?

?п

Является ли f1 именованным каналом (FIFO)?

? S

Является ли f1 сокетом?

? б

Является ли f1 блочным устройством?

? с

F1 символьное устройство?

? U

У f1 установлен бит setuid?

У f1 установлен бит setgid?

? к

У f1 установлен липкий бит?

? M

Время последней модификации для f1.

?

Время последнего доступа для f1.

? C

Время последнего изменения инода для f1.

знак равно

Время модификации f1 и f2 равны?

?>

Является ли время модификации f1 более поздним, чем f2?

<?

Время модификации f1 старше, чем f2?

? —

Является ли f1 жесткой ссылкой на f2?

Ниже приведен пример использования. Предполагая, что main.rb существует с правами на чтение, запись и не выполнять —

Это даст следующий результат —