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的方法可以互换吗?如果不是,它们之间有什么区别?
解决方法
一个关键的区别是尝试!是一个额外的方法调用,而& ;.不是.我能想到这造成的一个(公认的做作)差异
"1234"&.gsub(/d/,"a") $& #=> "1234" 这里没有惊喜 – 我进行了正则表达式匹配,因此设置了正则表达式全局变量($&是匹配的字符串). 但是,如果(在一个新鲜的irb会议 – 这很重要)我做 "1234".try!(:gsub,/d+/,"a") $& #=> nil 那么正则表达式相关的全局变量是零.这是因为这些全局变量并不是全局的 – 它们与调用代码的位置相关联(文档调用此线程和方法本地全局变量) 在这种情况下,$&仍在设置,但它正在设置内!方法,所以你永远不会看到它. 额外的方法调用也使得尝试更慢(在快速基准测试中几乎是一个数量级),尽管在任何实际使用中,您调用的实际方法的成本应该使尝试的成本相形见绌! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |