我对于sizeof(stack->head)
在Ruby中的工作原理感到困惑。如果键入变量然后调用该语句
size->head
您将获得变量的名称,后跟nil
puts _|_
但是,如果再次输入,则会出现错误
3
puts _|_
它似乎不像以美元符号开头的那些类似Perl的变量之一。
这个奇怪的符号在世界上是什么意思,它是如何运作的?
答案 0 :(得分: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
。
答案 1 :(得分: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"
名称以小写字母(a-z)或下划线(_)开头的ruby变量是局部变量或方法调用。未初始化的实例变量的值为nil。
irb(main):001:0> _
=> nil
irb(main):002:0> _ | _
=> false
irb(main):003:0> nil | nil
=> false
答案 2 :(得分:3)
在ruby中_
是有效的标识符。
在IRB
_
中包含最后一个表达式的值。
2.1.5 :001 > 100
=> 100
2.1.5 :002 > _
=> 100
答案 3 :(得分:0)
_
是一个ruby特殊变量,这个变量存储前一个表达式/命令的输出,所以当你这样做时:
1.9.3-p0 :043 > 3
=> 3
&#39; _&#39;包含值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。