我的应用程序控制器中有一个受保护的方法
def current_user
@current_user ||= User.find_by_id(session[:user_id])
end
我想知道||=
是什么意思?
我一直试图搜索并找出答案,但无济于事。
答案 0 :(得分:11)
基本上,a ||= b
表示assign b to a if a is null or undefined or false (i.e. false-ish value in ruby)
,它是a = b unless a
的快捷方式。
答案 1 :(得分:3)
|| =是一个红宝石成语。这意味着如果@current_user为nil(或false),则尝试通过id找到它并将其分配给@current_user,否则什么也不做。
答案 2 :(得分:3)
这是Ruby的一部分。
如果@current_user
为零或假,则会将其设置为User.find_by_id(session[:user_id])
答案 3 :(得分:0)
请注意与a += b
的相似之处,相当于a = a + b
。
因此a ||= b
相当于a = a || b
。正如其他人所提到的,这与a = b unless a
相同。
答案 4 :(得分:0)
在ruby中,a || = b'被称为“或 - 相等”运算符。这是一个简短的方法,如果a的布尔值为true(如果它既不是false也不是nil),它的值为a。如果不是,它的值为b。
答案 5 :(得分:0)
基本上,|| = b表示如果a为null或未定义,则将b分配给a false(即ruby中的false-ish值),它是a = b的快捷方式,除非 一个。
分享|编辑于2011年9月26日14:48回复
Romain 6,9711330
除了这个答案之外,还有一个例子 -
arr = nil || []
arr0 ||= []
arr <=> arr0 *#=> 0*
这意味着arr
表达式和arr0
表达式相等。
希望这有助于更好地了解||=
运营商。