我一直在使用===
來爲Ruby中的模式匹配值。最近,我發現該語言還支持正則表達式的=~
運算符。Ruby =〜vs ===運算符
的Ruby Documentation===
定義爲「殼體平等」和=~
爲「圖案匹配」。
案例平等 - Object類,有效地與調用#==,但通常由後人覆蓋到case語句提供明確的語義。
模式匹配 - 由後代(特別是Regexp和String)重寫以提供有意義的模式匹配語義。
通過實驗,我發現===
作品的正則表達式,類名稱,面值,甚至範圍,而=~
似乎只對正則表達式返回有用的值。我的問題是:爲什麼我會使用=~
?看起來好像===
支持一切=~
確實,然後一些。有什麼我在這裏錯過=~
打算做不同?
'regexp =〜str'和'regexp === str'在我的系統上返回完全不同的結果。 – Stefan