【Ruby】Rubyの変数と定数の事前定義について詳しく解説します

Ruby

事前定義変数

Rubyには様々な事前定義変数があり、それぞれの仕様があります。

インタープリタのパラメータや正規表現を扱うときなど、特定のタスクを実行するために事前定義変数を使用することができます。

Rubyの事前定義変数の一覧は以下の通りです。

変数解説
$!最後の ‘raise’ で設定された例外情報メッセージを保持します。ERROR_INFO のエイリアスです。
$@最後に発生した例外のバックトレースの配列を保持します。ERROR_POSITION のエイリアスです。
$/入力レコードの区切り文字で、デフォルトは改行です。nilに設定すると、ファイル全体が一度に読み込まれる。INPUT_RECORD_SEPARATORのエイリアス。
$\print と IO#write の出力セパレータ、デフォルトは nil。OUTPUT_RECORD_SEPARATORのエイリアス。
$,Array#joinの出力フィールドのセパレータとデフォルトのセパレータを指定する。OUTPUT_FIELD_SEPARATORのエイリアスです。
$;String#splitのデフォルトのセパレータである。FIELD_SEPARATORのエイリアスです。
$.最後のファイルから読み込まれた現在の入力行番号を保持する。INPUT_LINE_NUMBERのエイリアス。
$<コマンドライン引数または$stdinとして与えられたすべてのファイルの内容を連結したものにアクセスできるようにするオブジェクトです。DEFAULT_INPUTのエイリアスです。
$>kernel.printおよびkernel.printfの出力先で、デフォルト値は$stdoutです。DEFAULT_OUTPUTのエイリアスです。
$&最後のパターンマッチでマッチした文字列。MATCHのエイリアスです。
$`最後のパターンマッチの左側の文字列。PREMATCHのエイリアスです。
$’最後のパターンマッチの右側の文字列。POSTMATCHのエイリアスです。
$+最後に成功したパターン照合で最後に照合されたグループに関連する文字列。LAST_PAREN_MATCHのエイリアスです。
$1-$9最後にマッチしたパターンからn番目のグループにマッチした文字列。
$_現在のスコープで get または readline によって読み込まれた最後の入力行。これはローカル変数です。LAST_READ_LINEのエイリアス。
$~現在のスコープにおける最後のマッチに関する情報を保持する。これはローカル変数です。LAST_MATCH_INFO のエイリアスです。
$-pオプション -p が設定されている場合(ループモードがオン)真になります。読み取り専用の変数です。
$-llオプションが設定されている場合(改行処理がONの場合)真になります。読み取り専用の変数です。
$-iin-place-editモードが設定されている場合は拡張子を保持し、そうでない場合はnilを保持する。
$-aaオプションが設定されている場合(自動分割モードが1つ)、trueになります。読み取り専用の変数です。
$-ddのレベルはswitchです。DEBUGのエイリアス。
$-v冗長フラグ。v スイッチで設定される。VERBOSEのエイリアス。
$-Kソースコードの文字エンコーディング。KCODE のエイリアスです。
$0実行されるスクリプトの名前が含まれています。
$$現在実行されているRubyプログラムのプロセス番号。PROCESS_IDのエイリアス。
$?最後に終了した子プロセスの状態。CHILD_STATUS のエイリアス。
$:プログラムおよびバイナリモジュールのロードパスをloadまたはrequiredで指定します。LOAD_PATHのエイリアスです。
$FILENAME$<から読み込んだ現在の入力ファイル名。 $<.filename と同じ。
$stderr現在の標準エラー出力。
$stdin現在の標準入力です。
$stdout現在の標準出力。
$=大文字小文字を区別するフラグ、デフォルトは nil。 $IGNORECASE のエイリアス。
$*プログラムに与えられたコマンドライン引数。ARGV.ARGVの別名でもある。
$”配列は、require.LOAD_FEATURESの別名によってロードされたモジュール名を含んでいます。
puts "Script_name: ",$0;   

puts "Total number of process in this script: #{$$}"
  
a = "1,2,3,4,5,6,7"
$; = ","
p a.split       

"千葉ロッテマリーンズの、佐々木郎希です。" =~ /佐々木/

p $`

p $&

p $'

# 出力結果
# Script_name:
# rails_console
# Total number of process in this script: 18418
# ["1", "2", "3", "4", "5", "6", "7"]
# "千葉ロッテマリーンズの、"
# "佐々木"
# "郎希です。"

事前定義定数

Rubyには多くの事前定義定数があります。以下に、事前定義定数の一覧を示します。

定数名解説
TRUEtrue に相当する。
FALSEfalse に相当する。
NILnilに相当する。
STDIN標準入力、$stdinのデフォルト値。
STDOUT標準出力、$stdoutのデフォルト値。
STDERR標準出力エラーと$stderrのデフォルト値。
RUBY_VERSIONRubyインタプリタのバージョンを示す文字列。
RUBY_PLATFORMRubyインタプリタのプラットフォームを示す文字列。
RUBY_RELEASE_DATERubyインタプリタのリリース日を示す文字列。
DATA__END__の直後を指す、プログラムのファイルオブジェクトです。また、__END__がプログラム中に存在しない場合は定義されない。
ARGVプログラムに渡されるコマンドライン引数を保持する配列です。$*のエイリアス。
ARGFコマンドライン引数として渡されたファイルの仮想的な連結にアクセスできるようにするオブジェクトです。$<のエイリアスです。
ENVハッシュ型のオブジェクトで、現在の環境変数が格納されています。

注)TRUE、FALSE、NILは後方互換性があるため、TRUE、FALSE、NILを使用することを推奨します。

a = RUBY_VERSION
puts "Current Version: #{a}"         

b = RUBY_PLATFORM
puts "Platform of Ruby: #{b}"        

c = RUBY_RELEASE_DATE
puts "Release date of Ruby: #{c}"  

# 出力結果
# Current Version: 3.0.1
# Platform of Ruby: arm64-darwin20
# Release date of Ruby: 2021-04-05
タイトルとURLをコピーしました