Ruby中的string.match(regex)和regex.match(string)有什么区别?在这种语言中使用这两种结构的理由是什么?
答案 0 :(得分:4)
除了挂掉不同的物体(有时候调用一个而不是另一个物体更方便),它们是相同的。理由是它们既有用又有时比另一个更方便。
答案 1 :(得分:1)
我直截了当地说,match
或相关方法=~
表达了某种平等,正如=~
包含平等=
这一事实所表明的那样。和等价的~
关系(不是在红宝石中,而是在数学中)。但它并不完全是等价关系,在平等的三个公理(反身性,交换性,传递性)中,特别是交换性在这种关系中似乎是合理的维持;程序员很自然地期望string.match(regex)
或string =~ regex
与regex.match(string)
或regex =~ string
具有相同的意义。我自己,如果定义了任何一个而不是另一个,就会有问题。事实上,有些人觉得奇怪的是,方法===
,它也提醒我们某种平等,不是可交换的,并且提出了question。