相关疑难解决方法(0)

为什么Ruby不符号#=〜(正则表达式匹配运算符)?

在对它们执行正则表达式匹配时,Ruby不会自动对符号进行字符串化,这在包含符号的变量时很容易实现,并且在尝试正则表达式匹配之前忘记需要在它们上调用#to_s:

>> :this =~ /./
=> false
>> :this =~ :this
=> false
>> :this =~ /:this/
=> false
Run Code Online (Sandbox Code Playgroud)

事实证明:=〜是在Object,Ruby 1.8的原始类中定义的:

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

当然,实现只返回false,将其留给String和Regexp这样的子类来提供有意义的实现.

那么为什么Symbol不能提供类似下面的内容呢?

def =~(pattern)
  self.to_s =~ pattern
end
Run Code Online (Sandbox Code Playgroud)

那里的任何Ruby语言学家都知道吗?

ruby

7
推荐指数
1
解决办法
2318
查看次数

标签 统计

ruby ×1