Scala中的命名构造函数?

时间:2010-05-08 21:53:09

标签: scala scala-2.8 named-constructor

Scala中是否有命名构造函数?

2 个答案:

答案 0 :(得分:5)

取决于你对“命名构造函数”的意思,但是你可以重载构造函数 见Overload constructor for Scala's Case Classes?

此外,您可以将工厂方法放在您的类的Companion对象中(静态单例)。

答案 1 :(得分:3)

我认为没有,但是调用类构造函数的对象方法可以支持命名构造函数idiom。通常在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)}

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