mayoría de las veces, un constructor para una clase no hace más que tomar sus valores de argumento y los utilizan para establecer las variables de instancia:La implementación de un único constructor de Scala que hace más que las variables de ajuste
// Java
public class MyClass {
private int id;
public MyClass(int id) {
this.id = id;
}
}
Así que entiendo la eficiencia de la sintaxis constructor por defecto de Scala ... simplemente declarando una lista de variables entre paréntesis al lado del nombre de la clase:
// Scala
class MyClass(id: int) {
}
Sin embargo, ¿qué pasa con aquellas circunstancias en las que necesita un constructor para realmente hacer cosas, aparte de simplemente enchufando argumentos en instan ¿variables ce?
// Java
public class MyClass {
private String JDBC_URL = null;
private String JDBC_USER = null;
private String JDBC_PASSWORD = null;
public MyClass(String propertiesFilename) {
// Open a properties file, parse it, and use it to set instance variables.
// Log an error if the properties file is missing or can't be parsed.
// ...
}
}
¿Cómo funciona esto en Scala? Puedo tratar de definir una implementación para este constructor de este modo:
// Scala
class MyClass(propertiesFilename: String) {
def this(propertiesFilename: String) {
// parse the file, etc
}
}
... pero me da un error de compilación, quejándose de que el constructor se define en dos ocasiones.
Pude evitar este conflicto teniendo un constructor por defecto no-arg, y luego declarando lo anterior como un constructor secundario sobrecargado. Sin embargo, ¿qué pasa con las situaciones en las que REALMENTE NECESITA un constructor "uno-y-uno-único", y usted necesita que haga algo?
Doh! Gracias, estoy llegando poco a poco ... –