为什么 `Symbol#match` 的行为不同于 `String#match` 和 `Regexp#match`?
Why does `Symbol#match` behave differently from `String#match` and `Regexp#match`?
String#match
and Regexp#match
return a MatchData
匹配成功时:
"".match(//) # => #<MatchData "">
//.match("") # => #<MatchData "">
//.match(:"") # => #<MatchData "">
但是Symbol#match
return是匹配位置(如String#=~
):
:"".match(//) # => 0
为什么 Symbol#match
表现不同?有用例吗?
我将其报告为 Ruby 核心中的错误:https://bugs.ruby-lang.org/issues/11991。让我们看看他们会怎么说。
更新
被质疑的行为似乎是一个错误。似乎从 Ruby 2.4 开始,Symbol#match
将在匹配成功时 return 一个 MatchData
实例。
String#match
and Regexp#match
return a MatchData
匹配成功时:
"".match(//) # => #<MatchData "">
//.match("") # => #<MatchData "">
//.match(:"") # => #<MatchData "">
但是Symbol#match
return是匹配位置(如String#=~
):
:"".match(//) # => 0
为什么 Symbol#match
表现不同?有用例吗?
我将其报告为 Ruby 核心中的错误:https://bugs.ruby-lang.org/issues/11991。让我们看看他们会怎么说。
更新
被质疑的行为似乎是一个错误。似乎从 Ruby 2.4 开始,Symbol#match
将在匹配成功时 return 一个 MatchData
实例。