Rubyの特殊変数($@とか$`とか$数字とか・・・)
特殊変数
Rubyの組み込み変数の一部は、通常の変数としては使用できない特殊な名前を持っています。
例えば、 $' や $& あるいは $1, $2, $12345678901234567890 がそうです。
このように 「'$' + 特殊文字一文字」、または「'$' + 10進数字」という名前を持つ変数を特殊変数と呼びます。
また、 $-F や $-I のような変数もあります。 これらは Ruby の起動オプションと -F や -I などと対応しており、オプション変数と呼ばれます。
とのことです。
ちょこちょこ忘れて調べるので、自分用メモも兼ねて例と一緒にまとめておきたいと思います。
特殊変数一覧
正規表現関係
$', $&, &`
- $' : マッチした文字列より前の文字列
- $& : マッチした文字列
- &` : マッチした文字列より後ろの文字列
str = 'abcdefghijk' /efg/.match(str) puts $` # => abcd puts $& # => efg puts $' # => hijk
$~
- マッチしたMatchDataオブジェクトを表示する
str = 'abcdefghijk' /efg/.match(str) puts $~.class # => MatchData puts $~ # => efg puts $&.class # => String puts $& # => efg
ファイル・ライブラリ関係
$"
- requireしたライブラリの一覧を帰す
require_relative "lib_sample1" require_relative "lib_sample2" puts $" # => [ # "enumerator.so", # . # . # "/home/roma/lib_sample2.rb" # ]
$:
requireが検索するディレクトリ一覧を返す
puts $: # => [ # "/usr/local/rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0", # . # . # "/usr/local/rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/x86_64-linux" # ]
$-I
- ロードパスの一覧を返す
p $-I # => [ # "/usr/local/rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0", # . # . # "/usr/local/rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/x86_64-linux"] # ]
$0
- ファイル名を表示する
### ruby test.rbの時 puts $0 # => test.rb
例外関係
$@
- 例外のバックトレース
begin raise rescue puts $@ # => test.rb:2:in `<main>' end