我有一个类,我喜欢通过读取配置文件来初始化我的var,该配置文件生成中间对象/ vals,我希望将它们分组并隐藏在方法中。 这里是最低限度的问题 - 我用一个参数i调用ctor,实际上是一个文件来解析,而init-method生成的是字符串s,实际上比这里更复杂,有很多中间对象创建:在scala中初始化var
class Foo (val i: Int) {
var s : String;
def init() {
s = "" + i
}
init()
}
会产生这样的错误:class Foo needs to be abstract, since variable s is not defined
。在这个例子中,通过将String设置为“”可以很容易解决:var s = "";
,但实际上该对象比String更复杂,没有适当的Null实现。
我知道,我可以使用的选项,这不是字符串也适用于更复杂的东西:
var s : Option [String] = None
def init() {
s = Some ("" + i)
}
或者我可以用我的methodcall免除。使用选项会迫使我一遍又一遍地写一些东西,没有多少好处,因为不需要别人来以我想的方式初始化它。
是否有另一种方法来实现我的目标?
那么,在Scala中,你永远不能声明'var s:String',然后用其他方法初始化它? – asgs 2016-04-23 14:25:04