gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:58 24 4
gpt4 key购买 nike

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

>> :this =~ /./
=> false
>> :this =~ :this
=> false
>> :this =~ /:this/
=> false

原来 :=~ 是在 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

有 Ruby 语言学家知道吗?

最佳答案

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

>> RUBY_VERSION #=> "1.9.2"
>> :this =~ /./ #=> 0
>> :this =~ /is/ #=> 2

关于ruby - 为什么 Ruby 不使用 Symbol#=~(正则表达式匹配运算符)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4884242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com