Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/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 case类相等函数的作用是什么?_Scala_Case Class - Fatal编程技术网

scala case类相等函数的作用是什么?

scala case类相等函数的作用是什么?,scala,case-class,Scala,Case Class,根据,Scala案例类自动生成一个相等方法。然而: class SomeCaseClass(val string:String) {} val a = "123" assertTrue( a.equals( a ) ) // Passes assertTrue( new SomeCaseClass(a).equals( new SomeCaseClass(a) ) ) // Fails, Scala 2.10 那么,这个自动生成的equals方法做什么呢?它不是一个case类。这就是案例类

根据,Scala案例类自动生成一个相等方法。然而:

class SomeCaseClass(val string:String) {}

val a = "123"
assertTrue( a.equals( a ) )  // Passes
assertTrue( new SomeCaseClass(a).equals( new SomeCaseClass(a) ) ) // Fails, Scala 2.10

那么,这个自动生成的equals方法做什么呢?

它不是一个case类。这就是案例类:

scala> case class SomeCaseClass(string: String)
defined class SomeCaseClass

scala> val a = "123"
a: String = 123

scala> SomeCaseClass(a) == SomeCaseClass(a)
res1: Boolean = true
=
只是
equals

在您的示例中,您刚刚在常规对象上调用了
equals
(您将得到与
===
相同的结果)(此
equals
不是自动生成的),因此它只检查了引用相等


另外,您可能会注意到case类不需要
new
,因为它已经自动生成了伴生对象。它不需要构造函数中的
val
,因为默认情况下它是假定的
{}
对于常规类和case类都不是必需的。

它不是case类。这就是案例类:

scala> case class SomeCaseClass(string: String)
defined class SomeCaseClass

scala> val a = "123"
a: String = 123

scala> SomeCaseClass(a) == SomeCaseClass(a)
res1: Boolean = true
=
只是
equals

在您的示例中,您刚刚在常规对象上调用了
equals
(您将得到与
===
相同的结果)(此
equals
不是自动生成的),因此它只检查了引用相等


另外,您可能会注意到case类不需要
new
,因为它已经自动生成了伴生对象。它不需要构造函数中的
val
,因为默认情况下它是假定的
{}
对于常规类和case类都不是必需的。

它不是case类。这就是案例类:

scala> case class SomeCaseClass(string: String)
defined class SomeCaseClass

scala> val a = "123"
a: String = 123

scala> SomeCaseClass(a) == SomeCaseClass(a)
res1: Boolean = true
=
只是
equals

在您的示例中,您刚刚在常规对象上调用了
equals
(您将得到与
===
相同的结果)(此
equals
不是自动生成的),因此它只检查了引用相等


另外,您可能会注意到case类不需要
new
,因为它已经自动生成了伴生对象。它不需要构造函数中的
val
,因为默认情况下它是假定的
{}
对于常规类和case类都不是必需的。

它不是case类。这就是案例类:

scala> case class SomeCaseClass(string: String)
defined class SomeCaseClass

scala> val a = "123"
a: String = 123

scala> SomeCaseClass(a) == SomeCaseClass(a)
res1: Boolean = true
=
只是
equals

在您的示例中,您刚刚在常规对象上调用了
equals
(您将得到与
===
相同的结果)(此
equals
不是自动生成的),因此它只检查了引用相等


另外,您可能会注意到case类不需要
new
,因为它已经自动生成了伴生对象。它不需要构造函数中的
val
,因为默认情况下它是假定的<代码>{}对于普通类和案例类都不是强制性的。

你在
类之前缺少
案例
?你在
类之前缺少
案例
?你在
类之前缺少
案例
?你在
类之前缺少
案例
?@user48956英雄联盟我感觉自己就像是船长:)@user48956哈哈!我感觉自己就像是船长:)@user48956哈哈!我感觉自己就像是船长:)@user48956哈哈!我感觉自己就像队长一样:)