ruby-on-rails - 在 try 和 and 之间推荐哪种语法。当我们在 Ruby on Rails 中处理 nil 值时?

标签 ruby-on-rails ruby

如题,来自2.3.0 ruby​​版。我们可以使用安全导航运算符 (&.) 而不是尝试在 Rails 中处理 nil 值。 但是当我使用新语法时,我的审阅者告诉我这对审阅者或其他人来说对我的代码的含义不利。 所以我想知道在使用 nil 值时应该使用哪种语法?

nil.try(:method)
nil&.method

最佳答案

  1. &. 的工作方式类似于 #try!,而不是 #trydocumentation
  2. #try 不是 ruby​​ 原生的,但它是由 rails 提供的。
  3. 安全导航 #&. 几乎比使用 #try 快 3~4 倍
require 'active_support/all'
require 'benchmark'

foo = nil

puts Benchmark.measure { 10_000_000.times { foo.try(:boo) } }
puts Benchmark.measure { 10_000_000.times { foo&.boo } }

输出

      1.210000   0.000000   1.210000 (  1.211835)
      0.360000   0.000000   0.360000 (  0.363127)

关于ruby-on-rails - 在 try 和 and 之间推荐哪种语法。当我们在 Ruby on Rails 中处理 nil 值时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58364333/

相关文章:

ruby - 当它已经分配给某些东西时,你如何分配新的变量名? ruby

ruby 简单的竞争条件问题

mysql - Rails .where 查询不起作用

asp.net - .Net 平台有 Django 或 Rails 吗?

ruby-on-rails - 算法建议——根据类别数据计算相关商店

ruby - 如何将数组转换为 Ruby 中的字典?

ruby-on-rails - Rails SSL 搞砸了内容

ruby-on-rails - 使用 mongodb 嵌套字段

ruby-on-rails - 未定义方法 `-' 对于 nil :NilClass in ruby model

ruby-on-rails - 安装 FeedZirra 时出错