/ / Чому Ruby не є символом # = ~ (оператор відповідності регулярним вираженням)? - рубін

Чому Ruby не Symbol # = ~ (оператор регулярних переходів)? - рубій

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