【发布时间】:2019-12-14 03:39:08
【问题描述】:
在 Ruby on Rails 中,两者之间是否有区别:
if obj
# ...
end
和:
if obj.present?
# ...
end
似乎他们做同样的事情,不使用.present? 将有助于使代码行更短并且可能更清洁。我知道.present? 与blank? 是相反的,但我们是否应该在尝试确定一个对象是否“真实”时始终使用它?
是否存在某种性能差异?
【问题讨论】:
-
也许吧,但我真的不需要知道 nil、empty、blank、present 之间的区别。我只是问在测试真实性时是否值得在对象上调用
.present?。 -
present?存在性能成本,因为添加了额外的调用层,无论它是否重要,您都可以测试 with a benchmark。但我确实发现 Rails 新手使用它太多了 - 特别是在您只是检查变量是否已定义(不是 nil)的情况下。
标签: ruby-on-rails