我是一名Ruby新手。
||
和||=
有什么不同?
>> a = 6 || 4
=> 6
>> a ||= 6
=> 6
听起来它们是一样的。
我是一名Ruby新手。
||
和||=
有什么不同?
>> a = 6 || 4
=> 6
>> a ||= 6
=> 6
||=
将左侧的值设置为右侧的值,只有当左侧的值为假值时才会执行。
在此例中,6和4都是真值,因此a = 6 || 4
将把a
设置为第一个真值, 即 6
。
a ||= 6
只有当a
为假值时(即nil或false)才把它设置为6
。
a = nil
a ||= 6
a ||= 4
a # => 6
||=
来定义之前未定义的变量。 - Chris Heald
x ||= y
意味着如果x
是 null 或未定义 或 false,则将y
分配给x
;它是x = y unless x
的快捷方式。使用 Ruby 短路运算符
||
,如果左操作数为真,则不计算右操作数。
现在来看一些关于上述内容的快速示例:||=
:
当 x
未定义且 n
为 nil
时:
使用
unless
y = 2
x = y unless x
x # => 2
n = nil
m = 2
n = m unless n
m # => 2
=||
"表示等于的意思。y = 2
x ||= y
x # => 2
n = nil
m = 2
n ||= m
m # => 2
a ||= 6 只有在变量 a 还没有赋值时才会将其赋值为 6。 (实际上,只要 a 的值为假,就会赋值为 6,正如 Chris 所说)
a = 4 a ||= 6 => 4
a = 4 || 6 => 4
a ||= 6
展开为:a || a = 6
a
不是nil
或false
,它将使用a
,否则它将分配值给a
并返回该值。这通常用于值的记忆化。a || a = 6
。 - Ed S.两个表达式a = 6 || 4
和a ||= 6
返回的结果相同,但区别在于||=
只有当变量为空或false时才会将值赋给变量。
||=
可能类似于+=
。 - Grijesh Chauhan