ruby-on-rails – 在Ruby中,应该使用|| =还是定义?记录?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 在Ruby中,应该使用|| =还是定义?记录?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我应该如果定义吗?
return @current_user_session if defined?(@current_user_session)
 @current_user_session = UserSession.find

或|| =

@current_user_session ||= UserSession.find

我注意到了如果定义了?方法越来越多地被使用.一个人有什么优势吗?就个人而言,我更喜欢|| =可读性.我也认为Rails可能有一个memoize宏,它提供了这个行为透明度.是这样吗?

解决方法

小心:x || = y如果x返回false,则分配x = y.这可能意味着x是未定义的,没有或假的.

有很多次变量将被定义为false,尽管也许不是在@current_user_session实例变量的上下文中.

如果您想要简洁,请尝试条件结构:

defined?(@current_user_session) ?
    @current_user_session : @current_user_session = UserSession.find

要不就:

defined?(@current_user_session) || @current_user_session = UserSession.find

如果你只需要初始化变量.

猜你在找的Ruby相关文章