预定义的全局变量¶ ↑
一些预定义的全局变量具有可以通过 English
模块使用的同义词。对于每个同义词,都会给出英文同义词。
要使用该模块
require 'English'
异常¶ ↑
$!
(异常)¶ ↑
包含由 Kernel#raise
设置的 Exception
对象
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
- $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
是给定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"