什么是|| =是什么意思?
我的应用程序控制器中有一个受保护的方法
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
表达式是相等的。
希望这有助于更好地理解||=
运算符。