1

Scala中有命名构造函数吗?

4

2 回答 2

5

取决于您对“命名构造函数”的含义,但是是的,您可以重载构造函数,请参阅Scala 的案例类的重载构造函数?

您还可以将工厂方法放在您的类的伴随对象中(静态单例)。

于 2010-05-08T22:08:36.957 回答
3

我认为没有,但调用类构造函数的对象方法可以支持命名构造函数习语。通常在 Scala 中使用 apply 方法,因为它可以使用函数调用语法:

val mc = MyClass(a, b, c)

具有以下定义

object MyClass {def apply(a: Atype, b: Btype, c: Ctype) = new MyClass(a, b, c)}

或者如果你想要类似的东西

val mc = MyClass.create(a, b, c)

这将是简单的

object MyClass {def create(a: Atype, b: Btype, c: Ctype)  = new MyClass(a, b, c)}

您也不限于伴随对象,但是私有和受保护的构造函数将要求您直接使用伴随对象或作为代理来访问类构造函数,

于 2010-05-08T22:59:58.847 回答