2013-11-01 30 views
0
val tuple = (1,2) //> tuple : (Int, Int) = (1,2) 
tuple !=0   //> res0: Boolean = true 

val tuple1 = (0,0) //> tuple1 : (Int, Int) = (0,0) 
tuple1 !=0   //> res1: Boolean = true 

我以爲上面不應該編譯..但它確實如此。如果是這樣,這是什麼意思?在什麼情況下,將元組與零比較是否有意義? 另外,正如你所看到的,與零相比,非零的元組給出了真值。元組的語義不等於零

回答

4

您可以比較任何其他對象。如果它們是不同類型的(作爲一個元組並且整數零將始終爲),它們將始終不相等。如果要在編譯時要求比較對象是相同類型,則可以使用scalaz'=/====

+0

但爲什麼對象比較返回true?它不應該返回false,因爲它們是完全不同的對象? – RAbraham

+2

Scala中的'=='簡單地調用'obj1.equals(obj2)',所以它遵循'equals'方法的語義,它允許對象是不同的類型,只是返回false。 – Shadowlands