什么是|| =是什么意思?

我的应用程序控制器中有一个受保护的方法

def current_user @current_user ||= User.find_by_id(session[:user_id]) end 

我想知道||=是什么意思? 我一直在努力寻找并找出答案,但无济于事。

基本上, a ||= b表示assign b to a if a is null or undefined or false (ie false-ish value in ruby) ,则它是a = b unless a的快捷方式, a = b unless a

|| =是一个ruby成语。 这意味着如果@current_user为nil(或false),则尝试通过id找到它并将其分配给@current_user,否则什么都不做。

请参阅这些相关 问题 。

这是Ruby的一部分。

如果@current_user为nil或false,则将其设置为User.find_by_id(session[:user_id])

注意与a += b的平行线,相当于a = a + b

所以a ||= b相当于a = a || b a = a || b 。 正如其他人所提到的,这与a = b unless a相同, a = b unless a

在ruby’中| a || = b’被称为“或 – 相等”运算符。 这是一个简短的方法,如果a的布尔值为true(如果它既不是false也不是nil),它的值为a。 如果不是,它的值为b。

基本上,|| = b表示将a分配给a如果a为null或undefined或false(即ruby中的false-ish值),则它是a = b的快捷方式,除非a。

分享|编辑于2011年9月26日14:48回答

罗曼6,9711330

除了这个答案,这里有一个例子 –

 arr = nil || [] arr0 ||= [] arr <=> arr0 *#=> 0* 

这意味着arr表达式和arr0表达式是相等的。

希望这有助于更好地理解||=运算符。