gpt4 book ai didi

scala - Scala 中的 "new"关键字

转载 作者:行者123 更新时间:2023-12-03 05:00:55 25 4
gpt4 key购买 nike

我有一个非常简单的问题 - 在 Scala 中创建对象时我们什么时候应该应用 new 关键字?是当我们只尝试实例化 Java 对象时吗?

最佳答案

当您想要引用自己的构造函数时,请使用new关键字:

class Foo { }

val f = new Foo

如果您引用伴生对象的 apply 方法,请省略 new:

class Foo { }
object Foo {
def apply() = new Foo
}

// Both of these are legal
val f = Foo()
val f2 = new Foo

如果您创建了案例类:

case class Foo()

Scala secret 地为你创建一个伴生对象,将其变成这样:

class Foo { }
object Foo {
def apply() = new Foo
}

所以你可以这样做

f = Foo()

最后,请记住,没有任何规则规定同伴申请方法必须是构造函数的代理:

class Foo { }
object Foo {
def apply() = 7
}

// These do different things
> println(new Foo)
test@5c79cc94
> println(Foo())
7

而且,既然你提到了 Java 类:是的——Java 类很少有具有 apply 方法的伴生对象,因此您必须使用 new 和实际的类的构造函数。

关于scala - Scala 中的 "new"关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9727637/

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