【发布时间】:2011-01-05 07:56:26
【问题描述】:
在SO question 2068165 中,一个答案提出了使用类似这样的想法:
params[:task][:completed_at] &&= Time.parse(params[:task][:completed_at])
作为 DRYer 的说法
params[:task][:completed_at] = Time.parse(params[:task][:completed_at]) if params[:task][:completed_at]
params Hash 来自 (Rails/ActionView) 表单的位置。
这是众所周知的||= 成语的一种推论,如果 LHS 为 not nil/false,则设置该值。
像这样使用&&= 实际上是一个公认的Ruby 习语,我不知何故错过了,或者我只是忘记了一个更常用的习语? 现在有点晚了……
【问题讨论】:
-
解析器做了一些奇怪的事情:a = 1 如果 a 工作 和 b = 1 如果永远 fails
-
如果是 xxx 的话要雪上加霜; xxx=1;结束失败