我经常发现自己必须做一个额外的nil检查(以避免抛出一个“未定义为nil”的错误),我非常确定这是不必要的。
在一个常见的例子中,当查看可选URL PARAM(例如可能存在或不存在)时,我喜欢它们不区分大小写(如果它们存在)。
例如,我的一个控制器方法允许(不需要)&showdate=true,我喜欢通过不关心true vs true vs true来让它变得用户友好。
我只能说

@showdate = params[:showdate] == "true"

但前提是小写。
如果我这样做:
@showdate = params[:showdate].lower == "true"

如果url中缺少showdate,它当然会抛出一个不需要的错误,因为它是nil.lower抛出一个错误。
所以我在代码中花了这么多时间:
if params[:showdate]
  @showdate = params[:showdate].lower == "true"
else
  @showdate = false (or maybe nil)

我知道有更好的办法,只是不知道是什么任何帮助都将不胜感激。

最佳答案

@showdate = params[:showdate].to_s.downcase == "true"

关于ruby-on-rails - ruby:在进行不区分大小写的比较时也要避免if-then-else,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6713816/

10-11 11:08