string.match (regex) против regex.match (string) - PullRequest
7 голосов
/ 10 апреля 2011

В чем разница между string.match (regex) и regex.match (string) в Ruby? Каково оправдание наличия обеих этих конструкций в языке?

Ответы [ 2 ]

4 голосов
/ 10 апреля 2011

Помимо зависания различных объектов (что иногда делает удобнее называть один вместо другого), они одинаковы.Обоснование состоит в том, что они оба полезны, и один иногда удобнее другого.

1 голос
/ 10 апреля 2011

Я думаю, что, интуитивно, match или связанный с ним метод =~ выражает какое-то равенство, отраженное в том факте, что =~ включает равенство = и отношения эквивалентности ~не в рубине, а в математике).Но это не полностью отношение эквивалентности, и среди трех аксиом равенства (рефлексивность, коммутативность, транзитивность), в частности, коммутативность кажется разумным, чтобы оставаться в этом отношении;для программиста естественно ожидать, что string.match(regex) или string =~ regex будет означать то же самое, что и regex.match(string) или regex =~ string.У меня самого была бы проблема с запоминанием, если одно из них определено, а другое нет.На самом деле, некоторые люди считают странным, что метод ===, который также напоминает нам о некотором равенстве, не является коммутативным, и поднял вопрос s.

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