что делает этот рубин? - PullRequest
7 голосов
/ 08 января 2011
unless (place =~ /^\./) == 0

Я знаю, что разве похоже на if not, но как насчет условного?

Ответы [ 2 ]

12 голосов
/ 08 января 2011

=~ означает соответствие регулярному выражению

/^\./ - это регулярное выражение:

/.../ - разделители для регулярного выражения

^ соответствует началу строки или строки (\A соответствует только началу строки)

\. соответствует литералу.

9 голосов
/ 08 января 2011

Проверяет, начинается ли строка place с периода ..

Учтите это:

p ('.foo' =~ /^\./) == 0 # => true
p ('foo' =~ /^\./) == 0 # => false

В этом случае нет необходимости использовать == 0.place =~ /^\./ будет достаточно в качестве условия:

p '.foo' =~ /^\./ # => 0 # 0 evaluates to true in Ruby conditions
p 'foo' =~ /^\./ # => nil

РЕДАКТИРОВАТЬ: /^\./ является регулярным выражением.Начальная и конечная косая черта означает, что это является регулярным выражением, оставляя важный бит равным ^\..Первый символ ^ обозначает «начало строки / строки», а \. - это литерал символ ., так как символ точки обычно считается специальным символом в регулярных выражениях.

Чтобы узнать больше о регулярных выражениях, см. Википедию или отличный регулярные-выражения.info веб-сайт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...