加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Ruby 2.3安全导航操作符’和.之间有什么区别.

发布时间:2020-12-17 04:36:45 所属栏目:百科 来源:网络整理
导读:是安全的运算符吗?从 Ruby 2.3和尝试! ActiveSupport的方法可以互换吗?如果不是,它们之间有什么区别? 解决方法 一个关键的区别是尝试!是一个额外的方法调用,而amp ;.不是.我能想到这造成的一个(公认的做作)差异 "1234".gsub(/d/,"a")$ #= "1234" 这里
是安全的运算符吗?从 Ruby 2.3和尝试! ActiveSupport的方法可以互换吗?如果不是,它们之间有什么区别?

解决方法

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

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

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

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读