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

时间:2011-09-26 14:46:07

标签: ruby

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

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

我想知道||=是什么意思? 我一直试图搜索并找出答案,但无济于事。

6 个答案:

答案 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,否则什么也不做。

请参阅这些related questions

答案 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表达式相等。

希望这有助于更好地了解||=运营商。