在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)
}
}
答案 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()