预定义的全局变量¶ ↑
一些预定义的全局变量具有可以通过 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"