Ruby не автоматично автоматизує строфікацію символів, коливиконайте відповідність регулярних виразів на них, що легко зробити, коли у вас є змінні, що містять символи, і ви забудете, що вам потрібно зателефонувати на них #to_s, перш ніж спробувати збіг регулярних виразів:
>> :this =~ /./
=> false
>> :this =~ :this
=> false
>> :this =~ /:this/
=> false
Виявляється, що: = ~ визначено в первинному класі Object, Ruby 1.8 "s:
http://rubybrain.com/api/ruby-1.8.7/doc/index.html?a=M000308&name==~
Звичайно, реалізація просто повертає помилку, залишаючи її до підкласів типу String і Regexp, щоб забезпечити значущі реалізації.
Так чому ж символ не передбачає щось подібне?
def =~(pattern)
self.to_s =~ pattern
end
Будь-які мовні рубіни там знають?
Відповіді:
9 для відповіді № 1Я не знаю причину, чому було вирішено, що 1.8 має вести себе таким чином, але 1.9 змінився в цьому плані:
>> RUBY_VERSION #=> "1.9.2"
>> :this =~ /./ #=> 0
>> :this =~ /is/ #=> 2