puts _|_
Rubyでの動作に混乱しています。変数を入力してからそのステートメントを呼び出す場合
3
puts _|_
変数の名前の後にnilが続く
3
=> nil
ただし、もう一度入力すると false になります
puts _|_
=> false
ドル記号で始まる Perl のような変数の 1 つとは思えません。
この奇妙なシンボルは何を意味し、どのように機能するのでしょうか?
コンソール (IRB または pry) のアンダースコアは、前のコマンドの結果を表します。そう
3
=> 3
puts _|_
3
=> nil
ここで、上記のputs
ステートメントは次と同等になります
puts 3 <bit-wise or> 3
にputs 3|3
等しいputs 3
。
puts
を返すのでnil
、 を繰り返すputs _|_
と
puts nil|nil
...それはputs false
です。
_
は ruby の特殊変数で、前の式の結果を取得するために使用されます。
irb(main):030:0> 3
=> 3
irb(main):031:0> _
=> 3
irb(main):032:0> _.to_s
=> "3"
irb(main):033:0> _
=> "3"
名前が小文字 (az) またはアンダースコア (_) で始まる ruby 変数は、ローカル変数またはメソッド呼び出しです。初期化されていないインスタンス変数の値は nil です。
irb(main):001:0> _
=> nil
irb(main):002:0> _ | _
=> false
irb(main):003:0> nil | nil
=> false
Ruby_
では有効な識別子です。
InIRB
_
には、最後の式の値が含まれます。
2.1.5 :001 > 100
=> 100
2.1.5 :002 > _
=> 100
_
は ruby の特殊変数で、この変数は前の式/コマンドの出力を格納するため、次のようにします。
1.9.3-p0 :043 > 3
=> 3
'_' には、前の式の戻り値が 3 であるため、値 3 が含まれます。次のように puts を使用する場合:
1.9.3-p0 :045 > puts _|_
3
=> nil
戻り値は nil です。次に|を実行すると、以下のように:
1.9.3-p0 :049 > _|_
=> false
以下の式と同じであるため、false を返します。
1.9.3-p0 :050 > nil|nil
=> false
それが置く理由です| false を返します。