在Ruby中,puts如何工作?

在Ruby中,puts如何工作?,ruby,irb,puts,Ruby,Irb,Puts,我不明白在Ruby中,put 124;是如何工作的。如果您键入一个变量,然后调用该语句 3 puts _|_ 您将获得变量名,后跟nil 3 => nil 但是,如果您再次键入,则返回false puts _|_ => false 它看起来不像是以美元符号开头的类似Perl的变量之一 这个奇怪的符号到底是什么意思?它是如何工作的?\uu是一个ruby特殊变量,用于获取前面表达式的结果 irb(main):030:0> 3 => 3 irb(main):031:0

我不明白在Ruby中,
put 124;
是如何工作的。如果您键入一个变量,然后调用该语句

3
puts _|_
您将获得变量名,后跟nil

 3
 => nil
但是,如果您再次键入,则返回false

puts _|_
=> false
它看起来不像是以美元符号开头的类似Perl的变量之一


这个奇怪的符号到底是什么意思?它是如何工作的?

\uu
是一个ruby特殊变量,用于获取前面表达式的结果

irb(main):030:0> 3
=> 3
irb(main):031:0> _
=> 3
irb(main):032:0> _.to_s
=> "3"
irb(main):033:0> _
=> "3"
2.1.5 :001 > 100
 => 100
2.1.5 :002 > _
 => 100
名称以小写字母(A-z)或下划线(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
在这里,上面的
put
语句相当于

puts 3 <bit-wise or> 3

。。。在ruby
中,这是一个有效的标识符

IRB
包含最后一个表达式的值

irb(main):030:0> 3
=> 3
irb(main):031:0> _
=> 3
irb(main):032:0> _.to_s
=> "3"
irb(main):033:0> _
=> "3"
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
1.9.3-p0 :049 > _|_
 => false
其返回值为零。下次执行|时,如下所示:

1.9.3-p0 :045 > puts _|_
3
 => nil
1.9.3-p0 :049 > _|_
 => false
它返回false,因为它与下面的表达式相同:

1.9.3-p0 :050 > nil|nil
 => false
这就是puts返回false的原因