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 там знают?