預定義的全局變數¶ ↑
有些預定義的全局變數有同義詞,可透過模組 Engish 使用。對於每個同義詞,都會提供英文同義詞。
若要使用模組
require 'English'
例外¶ ↑
$!
(Exception)¶ ↑
包含由 Kernel#raise
設定的 Exception
物件
begin raise RuntimeError.new('Boo!') rescue RuntimeError p $! end
輸出
#<RuntimeError: Boo!>
English
- $ERROR_INFO
$@
(Backtrace)¶ ↑
與 $!.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
.
$&
(Matched Substring)¶ ↑
配對的字串。
English
- $MATCH
.
$`
(Pre-Match Substring)¶ ↑
比對左方的字串。
英文
- $PREMATCH
。
$'
(比對後子字串)¶ ↑
比對右方的字串。
英文
- $POSTMATCH
。
$+
(最後比對到的群組)¶ ↑
最後比對到的群組。
英文
- $LAST_PAREN_MATCH
。
$1
、$2
等(比對到的群組)¶ ↑
對於 $n
,nth 為比對到的群組。
無英文。
分隔符號¶ ↑
$/
(輸入記錄分隔符號)¶ ↑
輸入記錄分隔符號,最初為換行符。
英文
- $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
(若不為空),否則指向串流 $stdin;唯讀。
英文
- $DEFAULT_INPUT
。
$>
(預設標準輸出)¶ ↑
輸出串流,最初為 $stdout
。
英文
- <tt>$DEFAULT_OUTPUT
$.
(輸入位置)¶ ↑
最近讀取串流中的輸入位置(行號)。
英文
- $INPUT_LINE_NUMBER
, $NR
$_
(最後讀取行)¶ ↑
最近讀取串流中的行(字串)。
英文
- $LAST_READ_LINE
。
程序¶ ↑
$0
¶ ↑
最初包含正在執行的腳本名稱;可以重新指派。
$*
(ARGV)¶ ↑
指向 ARGV。
英文
- $ARGV
。
$$
(程序
ID)¶ ↑
目前程序的程序 ID。與 Process.pid
相同。
英文
- $PROCESS_ID
, $PID
。
$?
(子狀態)¶ ↑
最初為 nil
,否則為為最近結束的子程序建立的 Process::Status
物件;執行緒區域。
英文
- $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 commit hash
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"