gpt4 book ai didi

class - 为什么 "case class"不需要 "new"来创建新对象

转载 作者:行者123 更新时间:2023-12-03 13:39:53 24 4
gpt4 key购买 nike

在 Scala 中,您不需要使用“new”来创建新的“案例类”的原因是什么?
我现在尝试搜索了一段时间没有答案。

最佳答案

案例课为您提供自动生成 apply在他们的伴生对象上运行,您可以像构造函数一样使用它。

斯卡拉 你会发现反编译的字节码apply函数创建如下:

object Person {
def apply(name: String, age: Integer): Person = new Person(name,age)
}

示例:
case class Person(name: String, age: Integer)

以下三个都做同样的事情。
val p0 = new Person("Frank", 23) // normal constructor

val p1 = Person("Frank", 23) // this uses apply

val p2 = Person.apply("Frank", 23) // using apply manually

所以如果你使用 val p1 = Person("Frank", 23) 它不是构造函数 ,这是一个调用apply方法的方法。

请阅读 scala-object-apply-functions了解更多信息。

关于class - 为什么 "case class"不需要 "new"来创建新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11777199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com