ruby-on-rails - 在 try 和 & 之间推荐哪种语法。当我们在 Ruby on Rails 中处理 nil 值时?
问题描述
就像标题一样,来自 2.3.0 ruby 版本。我们可以使用 Safe Navigation Operator(&.) 代替 try 在 Rails 中处理 nil 值。但是当我使用新语法时,我的审阅者告诉我这对审阅者或其他人不好,我的代码的含义。所以我想知道在使用 nil 值时应该使用哪种语法?
nil.try(:method)
nil&.method
解决方案
&.
像#try!
,不是#try
。文件#try
不是 ruby 原生的,但它是由 rails 提供的。- 安全导航
#&.
几乎比使用导航快 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)
推荐阅读
- kql - kusto解析json后如何避免重复数据输入?
- android - 如何在android中为进度条创建带有圆角的水平不确定进度可绘制?
- wordpress - 在 Wordpress 中为工具集类型自定义字段创建简码以将多个值显示为范围
- github-pages - 推送 github 存储库时出错
- git - 无法在 github 中镜像 git repo
- sql-server - 如何计算 SQL Server 中每秒的 DML/DQL 请求数
- javascript - 定义变量时的意外行为
- mysql - 如何按时间分组,如果mysql中没有数据计数为零?
- pdf - 如何在 puppeteer 中将多个 pdf 合并为一个 pdf?
- laravel - 我想验证数据库 laravel 8 中是否不存在数据