带括号和不带括号的案例类别之间的区别

问题描述 投票:0回答:1

我有一个案例类case class FOO。并且想测试给定参数值myMethod的返回FOO()的方法value1

我有一个类似myMethod(value1) should equal FOO的测试。

测试失败,并显示FOO did not equal FOO()

FOOFOO()有什么区别?

scala case-class
1个回答
6
投票

[case class Foo()消减成等于]

class Foo() extends Product with Serializable {
  // some methods
}

object Foo extends (() => Foo) with Serializable {
  // some methods
}

因此,Foo()创建Foo类的实例,而Foo是对Foo伴随对象的引用。

但是,如果案例类Foo没有参数,则应考虑将其设为案例对象。如果您不使用内部可变状态[1]来滥用案例类,则无论如何,所有Foo()实例都应该是无法区分的。

[1]如果是,请考虑使用常规类。

© www.soinside.com 2019 - 2024. All rights reserved.