3

puts _|_Rubyでの動作に混乱しています。変数を入力してからそのステートメントを呼び出す場合

3
puts _|_

変数の名前の後にnilが続く

 3
 => nil

ただし、もう一度入力すると false になります

puts _|_
=> false

ドル記号で始まる Perl のような変数の 1 つとは思えません。

この奇妙なシンボルは何を意味し、どのように機能するのでしょうか?

4

4 に答える 4

6

コンソール (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です。

于 2015-05-23T15:02:11.390 に答える
3

_は 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
于 2015-05-23T15:00:52.700 に答える
3

Ruby_では有効な識別子です。

InIRB _には、最後の式の値が含まれます。

2.1.5 :001 > 100
 => 100
2.1.5 :002 > _
 => 100
于 2015-05-23T15:03:13.680 に答える
0

_は 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 を返します。

于 2015-05-23T18:21:04.353 に答える