Scala 中的“new”关键字

2024-01-15

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


Use the new当你想引用一个关键字时class自己的构造函数:

class Foo { }

val f = new Foo

Omit new如果您指的是伴随对象的apply method:

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

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

如果您已经制作了案例课程:

case class Foo()

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

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

所以你可以做

f = Foo()

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scala 中的“new”关键字 的相关文章

随机推荐