预定义的全局变量¶ ↑
一些预定义的全局变量可以通过模块 English 使用同义词。对于每个变量,都会给出英语同义词。
要使用模块
require 'English'
异常¶ ↑
$!
(异常)¶ ↑
包含由 Kernel#raise
设置的 Exception
对象
begin raise RuntimeError.new('Boo!') rescue RuntimeError p $! end
输出
#<RuntimeError: Boo!>
英语 - $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'"]
英语 - $ERROR_POSITION
。
模式匹配¶ ↑
这些全局变量存储有关当前作用域中最近一次成功匹配的信息。
有关详细信息和示例,请参阅正则表达式全局变量。
$~
(MatchData)¶ ↑
从匹配创建的 MatchData
对象;线程本地和帧本地。
英语 - $LAST_MATCH_INFO
。
$&
(匹配的子字符串)¶ ↑
匹配的字符串。
英语 - $MATCH
。
$`
(匹配前的子字符串)¶ ↑
匹配左侧的字符串。
英语 - $PREMATCH
。
$'
(匹配后的子字符串)¶ ↑
匹配右侧的字符串。
英语 - $POSTMATCH
。
$+
(最后匹配的组)¶ ↑
最后匹配的组。
英语 - $LAST_PAREN_MATCH
。
$1
, $2
, 等 (匹配的组)¶ ↑
对于 $n
,匹配的第 n 个组。
没有英语。
分隔符¶ ↑
$/
(输入记录分隔符)¶ ↑
输入记录分隔符,初始为换行符。
英语 - $INPUT_RECORD_SEPARATOR
, $RS
。
别名为 $-0
。
$\
(输出记录分隔符)¶ ↑
输出记录分隔符,初始为 nil
。
英语 - $OUTPUT_RECORD_SEPARATOR
, $ORS
。
流¶ ↑
$stdin
(标准输入)¶ ↑
当前标准输入流;初始为
$stdin # => #<IO:<STDIN>>
$stdout
(标准输出)¶ ↑
当前标准输出流;初始为
$stdout # => #<IO:<STDOUT>>
$stderr
(标准错误)¶ ↑
当前标准错误流;初始为
$stderr # => #<IO:<STDERR>>
$<
(ARGF 或 $stdin)¶ ↑
如果 ARGF
不为空,则指向流 ARGF
,否则指向流 $stdin;只读。
英语 - $DEFAULT_INPUT
。
$>
(默认标准输出)¶ ↑
一个输出流,初始为 $stdout
。
英语 - <tt>$DEFAULT_OUTPUT
$.
(输入位置)¶ ↑
最近读取的流中的输入位置(行号)。
英语 - $INPUT_LINE_NUMBER
, $NR
$_
(最后读取的行)¶ ↑
来自最近读取的流的行(字符串)。
英语 - $LAST_READ_LINE
。
进程¶ ↑
$0
¶ ↑
初始包含正在执行的脚本的名称;可以重新赋值。
$*
(ARGV)¶ ↑
指向 ARGV。
英语 - $ARGV
。
$$
(Process
ID)¶ ↑
当前进程的进程 ID。与 Process.pid
相同。
英语 - $PROCESS_ID
, $PID
。
$?
(子进程状态)¶ ↑
初始为 nil
,否则为最近退出的子进程创建的 Process::Status
对象;线程本地。
英语 - $CHILD_STATUS
。
$LOAD_PATH
(加载路径)¶ ↑
包含由 Kernel#load
和 Kernel#require
搜索的路径数组。
单例方法 $LOAD_PATH.resolve_feature_path(feature)
返回
-
[:rb, path]
,其中path
是为给定feature
加载的 Ruby 文件的路径。 -
[:so+ path]
,其中path
是为给定feature
加载的共享对象文件的路径。 -
如果没有这样的
feature
和path
,则为nil
。
示例
$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
¶ ↑
如果给出了命令行选项 -d
或 --debug
,则初始为 true
,否则初始为 false
;可以在运行程序中设置为任意值。
当 true
时,将每个引发的异常打印到 $stderr
。
别名为 $-d
。
$VERBOSE
¶ ↑
如果给出了命令行选项 -v
或 -w
,则初始为 true
,否则初始为 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
读取,如果给出 "-"
,或者在读取完所有文件后也会从 $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
¶ ↑
此 Ruby 的 git commit 哈希值
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"