<分区>
Possible Duplicate:
What does the operator ||= stands for in ruby?
我对 Rails 中 ||=
运算符的用法感到困惑。我在网上找不到任何有用的东西。谁能指导我?
如果您知道任何网络链接,请告诉我。
我想知道以下语句的含义:
@_current_user ||= session[:current_user_id] &&
User.find(session[:current_user_id])
<分区>
Possible Duplicate:
What does the operator ||= stands for in ruby?
我对 Rails 中 ||=
运算符的用法感到困惑。我在网上找不到任何有用的东西。谁能指导我?
如果您知道任何网络链接,请告诉我。
我想知道以下语句的含义:
@_current_user ||= session[:current_user_id] &&
User.find(session[:current_user_id])
最佳答案
让我们分解一下:
@_current_user ||= {SOMETHING}
这就是说,如果 nil
、false
,则将 @_current_user
设置为 {SOMETHING}
,或者不明确的。否则将其设置为 @_current_user
,或者换句话说,什么也不做。扩展形式:
@_current_user || @_current_user = {SOMETHING}
好的,现在到右边。
session[:current_user_id] &&
User.find(session[:current_user_id])
您通常会看到只有 bool 值的 &&
,但是在 Ruby 中您不必这样做。这里的技巧是,如果 session[:current_user_id]
不为 nil,并且 User.find(session[:current_user_id])
不为 nil,表达式将计算为 User.find(session[:current_user_id])
否则为 nil。
所以用伪代码把它们放在一起:
if defined? @_current_user && @_current_user
@_current_user = @_current_user
else
if session[:current_user_id] && User.find(session[:current_user_id])
@_current_user = User.find(session[:current_user_id])
else
@_current_user = nil
end
end
关于ruby - 我们什么时候在 Rails 中使用 "||="运算符?它的意义何在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5691390/