Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 元组的语义不等于零_Scala_Tuples - Fatal编程技术网

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