Ruby:为什么我在这里得到“正则表达式字面值”的警告?
发布时间:2020-12-17 03:17:58 所属栏目:百科 来源:网络整理
导读:一个简单的 Ruby程序,运行良好(使用 Ruby 2.0.0): #!/usr/bin/rubywhile gets print if /foo/../bar/end 但是,Ruby还会输出警告警告:regex literal in condition.看来Ruby认为我的触发器表达式/foo/../bar/是危险的. 我的问题:这个计划的危险在哪里?并且
一个简单的
Ruby程序,运行良好(使用
Ruby 2.0.0):
#!/usr/bin/ruby while gets print if /foo/../bar/ end 但是,Ruby还会输出警告警告:regex literal in condition.看来Ruby认为我的触发器表达式/foo/../bar/是危险的. 我的问题:这个计划的危险在哪里?并且:我可以关闭此警告(理想情况下仅针对此声明,保持其他警告处于活动状态)吗? 顺便说一句,我在网上发现了几种关于这种代码的讨论,也提到了警告,但从来没有找到一个很好的解释为什么我们得到警告. 解决方法
您可以使用显式匹配来避免警告:
while gets print if ~/foo/..~/bar/ end
我不知道为什么显示警告(说实话,我甚至不知道Ruby与$__隐式地匹配regexp文字),但是根据parser’s source code,它会显示,除非你在调用时提供-e选项Ruby,即将脚本作为参数传递: $ruby -e "while gets; print if /foo/../bar/ end" 我会避免使用$_作为隐式参数,而是使用类似的东西: while line = gets print line if line=~/foo/..line=~/bar/ end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |