Scala有一个名为case class的特性,而Kotlin则有另一个名为data class的特性。 Scala case class和Kotlin data class之间主要的区别是什么?
总的来说,它们非常相似,但有些区别需要注意:
Scala的case类可以有多个参数列表(包括隐式参数),只有第一个列表中的参数会被用于toString
/equals
/hashCode
。
Scala允许case类没有参数,而Kotlin则不允许。当然了,通常这种情况应该使用object
代替。
顺便提一下,case object
是存在的。
case类的伴生对象默认会扩展相应的函数类型。
Scala中的case class创建一个类,具有以下特点:
Kotlin中的数据类与Scala的case class基本相同:
定义访问器函数 (基本上是getter和setter)
自然地覆盖了哈希码、toString和equals函数
两者之间的主要区别在于Scala提供了比Kotlin更强大的模式匹配功能 (实际上Kotlin没有真正的模式匹配)。
data object
的支持。 - undefined