我在我的應用程序位指示保護的方法|| =是什麼意思?
def current_user
@current_user ||= User.find_by_id(session[:user_id])
end
我想知道什麼||=
手段? 我一直在努力尋找和發現,但無濟於事。
我在我的應用程序位指示保護的方法|| =是什麼意思?
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 (i.e. false-ish value in ruby)
,它是a = b unless a
的快捷方式。
還可以查看[Ruby編程/語法/運算符]上的*條件賦值*(http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Operators#1._Assignment)。 – rdvdijk
重要的是要實現短路 - 如果'a'爲'false-ish','b'不會運行(例如,通過不進行昂貴的db查詢節省時間)。 –
它不是'a = b除非a'。請參閱http://www.rubyinside.com/what-rubys-double-pipe-or-equals-really-does-5488.html以更好地瞭解其實際工作原理。 – Sigurd
這是Ruby的一部分。
如果@current_user
是零還是假的,它將被a += b
,這相當於a = a + b
設置爲User.find_by_id(session[:user_id])
ruby'a || = b'被稱爲「或 - 等於」運算符。如果a的布爾值爲true(如果它既不是假也不是nil),它就是a的簡短方式。如果不是,則它的值爲b。
基本上,|| = B意味着分配B到A,如果是空的或未定義的或 假(在紅寶石即假肥胖型值),它是一個快捷方式A = B,除非 一個。
份額|回答09月26日'11編輯在14:48
羅曼6,9711330
除了這個答案here`s一個例子 -
arr = nil || []
arr0 ||= []
arr <=> arr0 *#=> 0*
這意味着表達式和arr0
表達式是相等的。
希望這有助於更好地理解||=
運營商。
不知道該名稱是否適用,但在C#中被稱爲空合併運算符http://msdn.microsoft.com/en-us/library/ms173224.aspx – kenny
謝謝大家幫助我,讓我在正確的方向! – pka
重複:[在Ruby中'|| ='是什麼意思?](http://StackOverflow.Com/q/995593/),[在Ruby中'|| ='是什麼意思?](http:// StackOverflow (http://stackOverflow.Com/q/3945711/),[在Ruby變量賦值中的雙重管道符號?](http://q/3800957 /),[紅寶石中的'|| ='是什麼? /StackOverflow.Com/q/4500375/),[「|| ='」操作數在Ruby中的含義是什麼](http://StackOverflow.Com/q/5124930/),[什麼是「||」 ='意味着在Ruby語言中?](http://StackOverflow.Com/q/5230162/),[是紅寶石運算符'|| ='智能?](http://StackOverflow.Com/q/2989862/)也許還有其他許多人。 –