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