У меня есть класс, где мне нравится инициализировать мой var, читая configfile, который создает промежуточные объекты/vals, которые я хотел бы сгруппировать и скрыть в методе. Ниже приведена минимальная проблема - я вызываю ctor с параметром i, на самом деле File для синтаксического анализа, а init-метод генерирует String s, в действительности более сложный, чем здесь, с большим количеством промежуточных объектов, являющихся создано:initialize a var in scala
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