首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Ruby不使用Symbol#=~ (正则表达式匹配运算符)?

为什么Ruby不使用Symbol#=~ (正则表达式匹配运算符)?
EN

Stack Overflow用户
提问于 2011-02-03 17:20:20
回答 1查看 2.3K关注 0票数 7

在执行正则表达式匹配时,Ruby不会自动将符号串化,当您有包含符号的变量,而您忘记了在尝试正则表达式匹配之前需要对它们调用#to_s时,这很容易做到:

代码语言:javascript
复制
>> :this =~ /./
=> false
>> :this =~ :this
=> false
>> :this =~ /:this/
=> false

事实证明,:=~是在Ruby1.8的原始类Object中定义的:

http://rubybrain.com/api/ruby-1.8.7/doc/index.html?a=M000308&name==~

当然,实现只返回false,让String和Regexp这样的子类来提供有意义的实现。

那么为什么Symbol不提供类似下面这样的东西呢?

代码语言:javascript
复制
def =~(pattern)
  self.to_s =~ pattern
end

有没有Ruby语言学家知道?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-03 19:04:57

我不知道为什么决定1.8应该这样做的原因,但1.9在这方面发生了变化:

代码语言:javascript
复制
>> RUBY_VERSION #=> "1.9.2"
>> :this =~ /./ #=> 0
>> :this =~ /is/ #=> 2
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4884242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档