Spec-Zone.ru › Ruby 3.4

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

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

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

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

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.

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

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

Подробности и примеры см. в Глобальные переменные регулярных выражений.

$~ (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 - $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)

Идентификатор процесса текущего процесса. То же, что и 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–2024 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

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