-5
我知道Class定義了===
來測試一個對象是否是該類的一個實例。===如何在Ruby中工作?
現在的問題是爲什麼只有Class
是左手操作數纔會評估爲true
。
實施例:
'a' === String #false
和
String === 'a' #true
或
def Foo
end
f = Foo.new
f === Foo #false
Foo === f #true
http://gilesbowkett.blogspot.com/2007/11/what-is-threequals.html。 TLDR:不要使用它。對於Class來說,它的定義是檢查右側是否是實例,但對於String來說,===被定義爲檢查是否相等。 – 2015-04-02 04:36:45
你問這個問題的唯一原因是因爲方法名稱===和==相似。你會問爲什麼'3/2'與'2/3'不一樣? 'String ==='abc''是'String。===('abc')'的snytactic糖。如果該方法被命名爲'triple_equal',我們可以像這樣使用它:'String.triple_equal('abc')'。你會問,如果這應該是相同的''abc'.triple_equal(String)'? – 2015-04-02 04:52:58
@AmitKumarGupta,'...但是對於String,=== ...'有點混亂。我知道你指的是兩個字符串的比較,但讀者可能認爲你的意思是'String ==='cat''。 – 2015-04-02 04:58:04