首页 > 解决方案 > 在 try 和 & 之间推荐哪种语法。当我们在 Ruby on Rails 中处理 nil 值时?

问题描述

就像标题一样,来自 2.3.0 ruby​​ 版本。我们可以使用 Safe Navigation Operator(&.) 代替 try 在 Rails 中处理 nil 值。但是当我使用新语法时,我的审阅者告诉我这对审阅者或其他人不好,我的代码的含义。所以我想知道在使用 nil 值时应该使用哪种语法?

nil.try(:method)
nil&.method

标签: ruby-on-railsruby

解决方案


  1. &.#try!,不是#try文件
  2. #try不是 ruby​​ 原生的,但它是由 rails 提供的。
  3. 安全导航#&.几乎比使用导航快 3~4 倍#try
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)

推荐阅读