Scala 元组的语义不等于零
我认为上面的内容不应该编译。。但确实如此。如果是,这意味着什么?在什么情况下,将元组与零进行比较有意义?Scala 元组的语义不等于零,scala,tuples,Scala,Tuples,我认为上面的内容不应该编译。。但确实如此。如果是,这意味着什么?在什么情况下,将元组与零进行比较有意义? 此外,正如您所看到的,当与零比较时,非零元组为true。您可以将任何对象与任何其他对象进行比较。如果它们属于不同的类型(作为元组,整数0将始终是),它们将始终不相等。如果希望在编译时要求比较的对象是相同的类型,可以使用scalaz'=/=和==。可以将任何对象与任何其他对象进行比较。如果它们属于不同的类型(作为元组,整数0将始终是),它们将始终不相等。如果希望在编译时要求比较的对象是相同的类
此外,正如您所看到的,当与零比较时,非零元组为true。您可以将任何对象与任何其他对象进行比较。如果它们属于不同的类型(作为元组,整数0将始终是),它们将始终不相等。如果希望在编译时要求比较的对象是相同的类型,可以使用scalaz'
=/=
和==
。可以将任何对象与任何其他对象进行比较。如果它们属于不同的类型(作为元组,整数0将始终是),它们将始终不相等。如果希望在编译时要求比较的对象是相同的类型,可以使用scalaz'=/=
和==
。但是为什么对象比较返回true?它不应该返回false,因为它们是完全不同的对象吗?=
在Scala中只是调用obj1.equals(obj2)
,因此它遵循equals
方法的语义,该方法允许对象是不同的类型,只返回false。但是为什么对象比较返回true呢?Scala中的==
只是调用obj1.equals(obj2)
,因此它遵循equals
方法的语义,该方法允许对象为不同类型,只返回false。
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