Spec-Zone.ru › Ruby 3.3

Глобальные переменные

Предопределённые глобальные переменные

Некоторые предопределённые глобальные переменные имеют синонимы, доступные через модуль Engish. Для каждой из них указан английский синоним.

Для использования модуля:

require 'English'

Исключения

$! (Исключение)

Содержит объект Exception, установленный методом Kernel#raise:

begin
  raise RuntimeError.new('Boo!')
rescue RuntimeError
  p $!
end

Вывод:

#<RuntimeError: Boo!>

English - $ERROR_INFO

$@ (Стек вызовов)

То же, что и $!.backtrace; возвращает массив позиций стека вызовов:

begin
  raise RuntimeError.new('Boo!')
rescue RuntimeError
  pp $@.take(4)
end

Вывод:

["(irb):338:in `<top (required)>'",
 "/snap/ruby/317/lib/ruby/3.2.0/irb/workspace.rb:119:in `eval'",
 "/snap/ruby/317/lib/ruby/3.2.0/irb/workspace.rb:119:in `evaluate'",
 "/snap/ruby/317/lib/ruby/3.2.0/irb/context.rb:502:in `evaluate'"]

English - $ERROR_POSITION.

Сопоставление с образцом

Эти глобальные переменные хранят информацию о последнем успешном совпадении в текущем контексте.

Подробнее и примеры см. в Глобальные переменные Regexp.

$~ (MatchData)

Объект MatchData, созданный из совпадения; локальный для потока и локальный для фрейма.

English - $LAST_MATCH_INFO.

$& (Совпавший подстрока)

Совпавшая строка.

English - $MATCH.

$` (Подстрока перед совпадением)

Строка слева от совпадения.

English - $PREMATCH.

$' (Подстрока после совпадения)

Строка справа от совпадения.

English - $POSTMATCH.

$+ (Последняя совпавшая группа)

Последняя совпавшая группа.

English - $LAST_PAREN_MATCH.

$1, $2, и т. д. (Совпавшая группа)

Для $n n-я группа совпадения.

Нет английского аналога.

Разделители

$/ (Разделитель записей входных данных)

Разделитель записей входных данных, по умолчанию перевод строки.

English - $INPUT_RECORD_SEPARATOR, $RS.

Алиас $-0.

$; (Разделитель полей входных данных)

Разделитель полей входных данных, по умолчанию nil.

English - $FIELD_SEPARATOR, $FS.

Алиас $-F.

$\ (Разделитель записей выходных данных)

Разделитель записей выходных данных, по умолчанию nil.

English - $OUTPUT_RECORD_SEPARATOR, $ORS.

Потоки

$stdin (Стандартный ввод)

Текущий поток стандартного ввода; по умолчанию:

$stdin # => #<IO:<STDIN>>

$stdout (Стандартный вывод)

Текущий поток стандартного вывода; по умолчанию:

$stdout # => #<IO:<STDOUT>>

$stderr (Стандартная ошибка)

Текущий поток стандартной ошибки; по умолчанию:

$stderr # => #<IO:<STDERR>>

$< (ARGF или $stdin)

Указывает на поток ARGF, если он не пустой, иначе на поток $stdin; только чтение.

English - $DEFAULT_INPUT.

$> (По умолчанию стандартный вывод)

Поток вывода, по умолчанию $stdout.

English - <tt>$DEFAULT_OUTPUT

$. (Позиция ввода)

Позиция ввода (номер строки) в недавно прочитанном потоке.

English - $INPUT_LINE_NUMBER, $NR

$_ (Последняя прочитанная строка)

Строка (строка) из недавно прочитанного потока.

English - $LAST_READ_LINE.

Процессы

$0

Изначально содержит имя выполняемого скрипта; может быть переназначено.

$* (ARGV)

Указывает на ARGV.

English - $ARGV.

$$ (Process ID)

ID процесса текущего процесса. То же, что и Process.pid.

English - $PROCESS_ID, $PID.

$? (Статус дочернего процесса)

Изначально nil, в противном случае — объект Process::Status, созданный для завершившегося дочернего процесса; локальный для потока.

English - $CHILD_STATUS.

$LOAD_PATH (Путь загрузки)

Содержит массив путей, которые будут просматриваться методами Kernel#load и Kernel#require.

Singleton метод $LOAD_PATH.resolve_feature_path(feature) возвращает:

  • [:rb, path], где path — путь к файлу Ruby, подлежащему загрузке для данного feature.

  • [:so+ path], где path — путь к объектному файлу общего использования, подлежащему загрузке для данного feature.

  • nil если такого feature и path нет.

Примеры:

$LOAD_PATH.resolve_feature_path('timeout')
# => [:rb, "/snap/ruby/317/lib/ruby/3.2.0/timeout.rb"]
$LOAD_PATH.resolve_feature_path('date_core')
# => [:so, "/snap/ruby/317/lib/ruby/3.2.0/x86_64-linux/date_core.so"]
$LOAD_PATH.resolve_feature_path('foo')
# => nil

Алиас $: и $-I.

$LOADED_FEATURES

Содержит массив путей к загруженным файлам:

$LOADED_FEATURES.take(10)
# =>
["enumerator.so",
 "thread.rb",
 "fiber.so",
 "rational.so",
 "complex.so",
 "ruby2_keywords.rb",
 "/snap/ruby/317/lib/ruby/3.2.0/x86_64-linux/enc/encdb.so",
 "/snap/ruby/317/lib/ruby/3.2.0/x86_64-linux/enc/trans/transdb.so",
 "/snap/ruby/317/lib/ruby/3.2.0/x86_64-linux/rbconfig.rb",
 "/snap/ruby/317/lib/ruby/3.2.0/rubygems/compatibility.rb"]

Алиас $".

Отладка

$FILENAME

Значение, возвращаемое методом ARGF.filename.

$DEBUG

Изначально true если опция командной строки -d или --debug указана, в противном случае изначально false; может быть установлено в любое из этих значений во время выполнения программы.

Когда true, печатает каждое поднятое исключение в $stderr.

Алиас $-d.

$VERBOSE

Изначально true если опция командной строки -v или -w указана, в противном случае изначально false; может быть установлено в любое из этих значений, или в nil, во время выполнения программы.

Когда true, включает Ruby предупреждения.

Когда nil, отключает предупреждения, включая те, что исходят от Kernel#warn.

Алиас $-v и $-w.

Другие переменные

$-a

Указывает, была ли задана опция командной строки -a; только чтение.

$-i

Содержит расширение, заданное с опцией командной строки -i, или nil если нет.

Псевдоним метода ARGF.inplace_mode.

$-l

Указывает, была ли установлена опция командной строки -l; только чтение.

$-p

Указывает, была ли задана опция командной строки -p; только чтение.

Устаревшие

$=

$,

Предопределённые глобальные константы

Потоки

STDIN

Поток стандартного ввода (значение по умолчанию для $stdin):

STDIN # => #<IO:<STDIN>>

STDOUT

Поток стандартного вывода (значение по умолчанию для $stdout):

STDOUT # => #<IO:<STDOUT>>

STDERR

Поток стандартной ошибки (значение по умолчанию для $stderr):

STDERR # => #<IO:<STDERR>>

Среда

ENV

Хэш, содержащий текущие имена и значения переменных среды:

ENV.take(5)
# =>
[["COLORTERM", "truecolor"],
 ["DBUS_SESSION_BUS_ADDRESS", "unix:path=/run/user/1000/bus"],
 ["DESKTOP_SESSION", "ubuntu"],
 ["DISPLAY", ":0"],
 ["GDMSESSION", "ubuntu"]]

ARGF

Виртуальное объединение файлов, указанных в командной строке, или из $stdin если не было указано ни одного файла, "-" указано, или после того, как все файлы были прочитаны.

ARGV

Массив переданных аргументов командной строки.

TOPLEVEL_BINDING

Связывание Binding верхнего уровня:

TOPLEVEL_BINDING # => #<Binding:0x00007f58da0da7c0>

RUBY_VERSION

Версия Ruby:

RUBY_VERSION # => "3.2.2"

RUBY_RELEASE_DATE

Строка даты выпуска:

RUBY_RELEASE_DATE # => "2023-03-30"

RUBY_PLATFORM

Идентификатор платформы:

RUBY_PLATFORM # => "x86_64-linux"

RUBY_PATCHLEVEL

Целое число уровня исправления для данной версии Ruby:

RUBY_PATCHLEVEL # => 53

Для сборки разработки уровень исправления будет -1.

RUBY_REVISION

Хэш git коммита для данного Ruby:

RUBY_REVISION # => "e51014f9c05aa65cbf203442d37fef7c12390015"

RUBY_COPYRIGHT

Строка авторских прав:

RUBY_COPYRIGHT
# => "ruby - Copyright (C) 1993-2023 Yukihiro Matsumoto"

RUBY_ENGINE

Имя реализации Ruby:

RUBY_ENGINE # => "ruby"

RUBY_ENGINE_VERSION

Версия реализации Ruby:

RUBY_ENGINE_VERSION # => "3.2.2"

RUBY_DESCRIPTION

Описание реализации Ruby:

RUBY_DESCRIPTION
# => "ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]"

Встроенные данные

DATA

Определяется только в том случае, если программа имеет эту строку:

__END__

При определении DATA является объектом File, содержащим строки, следующие за __END__, расположенными в начале этих строк:

p DATA
DATA.each_line { |line| p line }
__END__

Вывод:

#<File:t.rb>
"Foo\n"
"Bar\n"
"Baz\n"

Ruby Core © 1993–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API