为什么`Symbol#match`的行为与`String#match`和`Regexp#match`不同?

saw*_*awa 6 ruby regex symbols

String#match并在匹配成功时Regexp#match返回MatchData:

"".match(//) # => #<MatchData "">
//.match("") # => #<MatchData "">
//.match(:"") # => #<MatchData "">
Run Code Online (Sandbox Code Playgroud)

Symbol#match返回匹配位置(如String#=~):

:"".match(//) # => 0
Run Code Online (Sandbox Code Playgroud)

为什么Symbol#match表现不一样?有用例吗?

saw*_*awa 1

我将其报告为 Ruby 核心中的错误:https ://bugs.ruby-lang.org/issues/11991 。让我们看看他们会说什么。


更新 所质疑的行为似乎是一个错误。似乎从 Ruby 2.4 开始,匹配成功时Symbol#match会返回一个实例。MatchData