【发布时间】:2010-05-08 21:53:09
【问题描述】:
Scala 中有命名构造函数吗?
【问题讨论】:
-
因问题含糊而被否决。
标签: scala scala-2.8 named-constructor
Scala 中有命名构造函数吗?
【问题讨论】:
标签: scala scala-2.8 named-constructor
取决于您对“命名构造函数”的含义,但是是的,您可以重载构造函数 见Overload constructor for Scala's Case Classes?
您还可以将工厂方法放在类的伴随对象中(静态单例)。
【讨论】:
我认为没有,但是调用类构造函数的对象方法可以支持命名构造函数惯用语。通常在 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)}
您也不限于伴随对象,但是私有和受保护的构造函数将要求您直接使用伴随对象或作为代理来访问类构造函数,
【讨论】: