Tengo una clase donde me gusta inicializar mi var leyendo un archivo de configuración, que produce objetos intermedios/vals, que me gustaría agrupar y ocultar en un método. Aquí está el mínimo problema: llamé al ctor con un param i, en realidad un archivo para analizar, y el método init genera el String s, en realidad más complicado que aquí, con muchos objetos intermedios creado:inicializar una var en scala
class Foo (val i: Int) {
var s : String;
def init() {
s = "" + i
}
init()
}
Esto producirá el error: class Foo needs to be abstract, since variable s is not defined
. En este ejemplo, es fácil de resolver estableciendo el String en "": var s = "";
, pero en realidad el objeto es más complejo que String, sin una implementación nula adecuada.
Lo sé, lo puede usar una opción, que funciona para cosas más complicadas de cadena demasiado:
var s : Option [String] = None
def init() {
s = Some ("" + i)
}
o puedo prescindir de mi methodCall. Usar una Opción me obligará a escribir Algunas veces una y otra vez, sin mucho beneficio, ya que no hay necesidad de nada más que inicializarlo de esa manera, pensé que podría.
¿Hay alguna otra manera de lograr mi objetivo?
Entonces, en Scala, nunca se puede declarar un 'var s: String' y luego inicializarlo en algún otro método? – asgs