Kri*_*ris 15 ruby ruby-on-rails memoization
我应该用吗? if defined?
return @current_user_session if defined?(@current_user_session)
@current_user_session = UserSession.find
Run Code Online (Sandbox Code Playgroud)
要么 ||=
@current_user_session ||= UserSession.find
Run Code Online (Sandbox Code Playgroud)
我注意到if defined?
最近使用的方法越来越多.一个人对另一个人有什么好处吗?就个人而言,我更喜欢||=
可读性.我也认为Rails可能有一个memoize
透明地提供这种行为的宏.是这样的吗?
gun*_*uns 25
注意:如果x返回false,则x || = y指定x = y.这可能意味着x是undefined,nil或false.
虽然可能不在@current_user_session实例变量的上下文中,但很多时候会定义变量和false.
如果你想要简洁,试试条件结构:
defined?(@current_user_session) ?
@current_user_session : @current_user_session = UserSession.find
Run Code Online (Sandbox Code Playgroud)
要不就:
defined?(@current_user_session) || @current_user_session = UserSession.find
Run Code Online (Sandbox Code Playgroud)
如果你只需要初始化变量.
归档时间: |
|
查看次数: |
6276 次 |
最近记录: |