预定义全局变量¶ ↑
一些预定义全局变量具有可通过模块 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
对象;线程局部和帧局部。
English
- $LAST_MATCH_INFO
.
$&
(匹配子字符串)¶ ↑
匹配的字符串。
English
- $MATCH
.
$`
(匹配前子字符串)¶ ↑
匹配左侧的字符串。
English
- $PREMATCH
.
$'
(匹配后子字符串)¶ ↑
匹配右侧的字符串。
English
- $POSTMATCH
.
$+
(上次匹配的组)¶ ↑
上次匹配的组。
英文
- $LAST_PAREN_MATCH
。
$1
、$2
等(匹配的组)¶ ↑
对于 $n
,匹配的第 n 个组。
无英文。
分隔符¶ ↑
$/
(输入记录分隔符)¶ ↑
输入记录分隔符,最初为换行符。
英文
- $INPUT_RECORD_SEPARATOR
、$RS
。
别名为 $-0
。
$;
(输入字段分隔符)¶ ↑
输入字段分隔符,最初为 nil
。
英文
- $FIELD_SEPARATOR
、$FS
。
别名为 $-F
。
$\
(输出记录分隔符)¶ ↑
输出记录分隔符,最初为 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。
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
是要为给定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
的虚拟连接(如果没有给出文件、给出 "-"
或在所有文件都已读取后)。
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 提交哈希
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"