我有这段代码:
a=10
b=20
p (a && b)
上面的p
语句打印最后一个变量的值。为什么不打印两个变量的值?
答案 0 :(得分:5)
a
是真实的,因此a && b
会返回b
。 p
接受该参数并打印出来。
答案 1 :(得分:2)
p (a && b)
并不意味着"打印a和b" 。
&&
是一名运营商。 a && b
(几乎)等同于:
unless a
a
else
b
end
如果a
为a
或nil
,则会返回false
:
nil && 123 #=> nil
false && 123 #=> false
,否则返回b
:
:foo && 123 #=> 123
:bar && 123 #=> 123
您的代码评估为:
a = 10
b = 20
p (a && b)
p (10 && 20)
p (20)
p 20
为了通过p
打印两个值,您必须将它们作为单独的参数传递:
p a, b
# or
p(a, b)
括号是可选的,但如果您使用它们,p
和(
之间就没有空格。