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

时间:2016-01-11 10:31:07

标签: ruby regex symbols

匹配成功后,

String#matchRegexp#match会返回MatchData

"".match(//) # => #<MatchData "">
//.match("") # => #<MatchData "">
//.match(:"") # => #<MatchData "">

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

:"".match(//) # => 0

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

1 个答案:

答案 0 :(得分:1)

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

<强>更新 质疑的行为似乎是一个错误。似乎从Ruby 2.4,Symbol#match将在匹配成功时返回MatchData实例。