在 Ruby 中,puts _|_ 是如何工作的?
In Ruby, how does puts _|_ work?
我对 puts _|_
在 Ruby 中的工作方式感到困惑。如果您输入一个变量然后调用该语句
3
puts _|_
你得到变量名后跟 nil
3
=> nil
但是,如果您再次输入,则会得到 false
puts _|_
=> false
它看起来不像那些以美元符号开头的类似 Perl 的变量之一。
这个奇怪的符号到底是什么意思,它是如何工作的?
_
是一个ruby特殊变量,用来获取前面表达式的结果。
irb(main):030:0> 3
=> 3
irb(main):031:0> _
=> 3
irb(main):032:0> _.to_s
=> "3"
irb(main):033:0> _
=> "3"
名称以小写字母(a-z)或下划线(_)开头的ruby变量是局部变量或方法调用。未初始化的实例变量的值为 nil。
irb(main):001:0> _
=> nil
irb(main):002:0> _ | _
=> false
irb(main):003:0> nil | nil
=> false
控制台(IRB 或 pry)中的下划线代表上一个命令的结果。所以
3
=> 3
puts _|_
3
=> nil
此处上面的puts
语句等同于
puts 3 <bit-wise or> 3
其中 puts 3|3
等于 puts 3
.
因为puts
returnsnil
,当你重复puts _|_
它变成
puts nil|nil
... 即 puts false
.
在 ruby _
中是一个有效的标识符。
In IRB
_
包含最后一个表达式的值。
2.1.5 :001 > 100
=> 100
2.1.5 :002 > _
=> 100
_
是一个ruby特殊变量,这个变量存储了前面expression/command的输出,所以当你做:
1.9.3-p0 :043 > 3
=> 3
'_' 包含值 3,因为 return 前一个表达式的值为 3。当您使用 puts 时,如下所示:
1.9.3-p0 :045 > puts _|_
3
=> nil
它的return值为nil.Next执行|的时间如下:
1.9.3-p0 :049 > _|_
=> false
它 return 是假的,因为它与下面的表达式相同:
1.9.3-p0 :050 > nil|nil
=> false
这就是为什么 | returns false.
我对 puts _|_
在 Ruby 中的工作方式感到困惑。如果您输入一个变量然后调用该语句
3
puts _|_
你得到变量名后跟 nil
3
=> nil
但是,如果您再次输入,则会得到 false
puts _|_
=> false
它看起来不像那些以美元符号开头的类似 Perl 的变量之一。
这个奇怪的符号到底是什么意思,它是如何工作的?
_
是一个ruby特殊变量,用来获取前面表达式的结果。
irb(main):030:0> 3
=> 3
irb(main):031:0> _
=> 3
irb(main):032:0> _.to_s
=> "3"
irb(main):033:0> _
=> "3"
名称以小写字母(a-z)或下划线(_)开头的ruby变量是局部变量或方法调用。未初始化的实例变量的值为 nil。
irb(main):001:0> _
=> nil
irb(main):002:0> _ | _
=> false
irb(main):003:0> nil | nil
=> false
控制台(IRB 或 pry)中的下划线代表上一个命令的结果。所以
3
=> 3
puts _|_
3
=> nil
此处上面的puts
语句等同于
puts 3 <bit-wise or> 3
其中 puts 3|3
等于 puts 3
.
因为puts
returnsnil
,当你重复puts _|_
它变成
puts nil|nil
... 即 puts false
.
在 ruby _
中是一个有效的标识符。
In IRB
_
包含最后一个表达式的值。
2.1.5 :001 > 100
=> 100
2.1.5 :002 > _
=> 100
_
是一个ruby特殊变量,这个变量存储了前面expression/command的输出,所以当你做:
1.9.3-p0 :043 > 3
=> 3
'_' 包含值 3,因为 return 前一个表达式的值为 3。当您使用 puts 时,如下所示:
1.9.3-p0 :045 > puts _|_
3
=> nil
它的return值为nil.Next执行|的时间如下:
1.9.3-p0 :049 > _|_
=> false
它 return 是假的,因为它与下面的表达式相同:
1.9.3-p0 :050 > nil|nil
=> false
这就是为什么 | returns false.