Scala构造带或不带参数的对象

时间:2015-03-11 13:18:01

标签: scala constructor

在Scala中,如果调用了no-params构造函数,需要一个基于预定义计算构造默认对象的类(在代码下面可能不是语法正确,但是显示了这个想法)。我将能够通过创建一个带有this(i, s)的对象和在外部创建的参数来测试其方法。最好的方法是什么?

class myobj(i: Int, s: String) {
    def this() = {
        val j = 7 // in reality more computation with extra vals involved
        val i = j
        val str = "abcdefg"
        val s = str.get(indexOf (i % 5))
        this(i, s)
    }
}

1 个答案:

答案 0 :(得分:3)

静态工厂可能会更好:

class MyObj(i: Int, s: String)

object MyObj {
  def apply() = {
    val j = 7 // in reality more computation with extra vals involved
    val i = j
    val str = "abcdefg"
    val s = ""
    new MyObj(i, s)
  }
}

然后你可以这样做:

val o = MyObj()