代码之家  ›  专栏  ›  技术社区  ›  Łukasz Lew

scala中的命名构造函数?

  •  1
  • Łukasz Lew  · 技术社区  · 16 年前

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

    2 回复  |  直到 16 年前
        1
  •  5
  •   Community Mohan Dere    9 年前

    取决于“命名构造函数”的含义,但可以重载构造函数 看见 Overload constructor for Scala's Case Classes?

    此外,还可以将工厂方法放入类的配套对象中(静态单例)。

        2
  •  3
  •   missingfaktor Kevin Wright    16 年前

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

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

    推荐文章