2011-10-10 89 views
0
params[:user][:role_ids] ||= [] 

它是做什麼的?「|| =」在Ruby 1.9.2中做什麼?

紅寶石-v = 1.9.2p290

+0

重複:?什麼是'|| ='Ruby中的意思是(http://StackOverflow.Com/q/995593/)[?什麼是'|| ='在Ruby中的意思] (http://StackOverflow.Com/q/3800957/),[Ruby中的'|| ='是什麼?](http://StackOverflow.Com/q/3945711/),[Ruby管理變量賦值中的雙重管道符號?](http://StackOverflow.Com/q/4500375/),[「|| ='」操作數在ruby中代表什麼意思](http://StackOverflow.Com/q/5124930/),[在Ruby語言中,|| || =是什麼意思?](http://stackOverflow.Com/q/5230162/),[是ruby運算符'|| ='智能?](http://StackOverflow.Com/q/2989862 /),... –

+0

... [|| ='是什麼意思?](http://StackOverflow.Com/q/7556902/),也可能是其他許多人。另請參閱[|| ='(或等於)線程和頁面的確切列表](http://Ruby-Forum.Com/topic/151660/)。 *請*,*請*,*請*不要提出重複的問題。它只是散佈圍繞該網站的信息,而這些信息只能在一個地方找到。謝謝! –

+0

@JörgWMittag:爲什麼告訴393代表用戶不要提出重複的問題,而不是4個代表3K以上的代表(因此擁有相近的權限)不要回答重複的問題? –

回答

5

它指定[]params["user][:role_ids]到如果params["user][:role_ids]nil或另一falsy值...

否則,它保留的params["user][:role_ids]

原始值實施例

variable = nil 

variable ||= "string" 

puts variable # "string" 

variable2 = "value" 

variable2 ||= "string" 

puts variable2 # "value" 
2

如果params[:user][:role_ids]nil,它就會與[]否則params[:user][:role_ids]保持它的價值進一步

1

如果左邊的值尚未分配初始化,將其分配給右手價值。如果它被分配,保持它自己。 Michael Hartl的RoR tutorial site可以找到一個很好的解釋。

1

這是memoize的運營商,它的兩兩件事之一:

  1. 如果在它左邊的值不爲零,它只是返回值
  2. 如果在它左邊的值爲零(或未定義)它設置它。
1

這是一個條件分配在Ruby中。您可以在這裏閱讀更多關於它的信息:Ruby Operators

1

如果變量尚未設置,它將爲變量設置一個值。含義

class Something 
    attr_accessor :some_value 

def perform_action 
    @some_value ||= "Mom" 
    puts @some_value 
end 

foo = Something.new 
foo.perform_action -> "Mom" 
foo.some_value = "Dad" 
foo.perform_action -> "Dad"