ruby-on-rails – Ruby 2.3安全导航操作符’和.之间有什么区别.和’试试!’ ActiveSupport的方法?

是安全的运算符吗?从 Ruby 2.3和尝试! ActiveSupport的方法可以互换吗?如果不是,它们之间有什么区别?

解决方法

一个关键的区别是尝试!是一个额外的方法调用,而&amp ;.不是.我能想到这造成的一个(公认的做作)差异
"1234"&.gsub(/\d/,"a")
$& #=> "1234"

这里没有惊喜 – 我进行了正则表达式匹配,因此设置了正则表达式全局变量($&是匹配的字符串).

但是,如果(在一个新鲜的irb会议 – 这很重要)我做

"1234".try!(:gsub,/\d+/,"a")
$& #=> nil

那么正则表达式相关的全局变量是零.这是因为这些全局变量并不是全局的 – 它们与调用代码的位置相关联(文档调用此线程和方法本地全局变量)

在这种情况下,$&仍在设置,但它正在设置内!方法,所以你永远不会看到它.

额外的方法调用也使得尝试更慢(在快速基准测试中几乎是一个数量级),尽管在任何实际使用中,您调用的实际方法的成本应该使尝试的成本相形见绌!

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...