En Scala, si tenemos¿Automáticamente crea getters para los parámetros de clase (para evitar clases de casos)?
class Foo(bar:String)
podemos crear un nuevo objeto, pero no puede acceder a bar
val foo = new Foo("Hello")
foo.bar // gives error
Sin embargo, si declaramos Foo
ser un case class
esto funciona:
case class Foo(bar:String)
val foo = Foo("hello")
foo.bar // works
Estoy obligado a hacer muchas de mis clases como clases de casos debido a esto. De lo contrario, tengo que escribir código repetitivo para acceder bar
:
class Foo(bar:String) {
val getbar = bar
}
Así que mis preguntas son:
- ¿Hay alguna manera de "arreglar" esto sin usar las clases de casos o código repetitivo?
- ¿Está utilizando clases de casos en este contexto una buena idea? (o ¿cuáles son las desventajas de las clases de casos?)
Supongo que el segundo merece una pregunta por separado.
true' val' guarda 1 caracter. Sin embargo, sería genial saber por qué las clases de casos no son buenas. – Jus12
@ Jus12 He hecho una edición de acuerdo con su pregunta, en resumen: es más flexible –
En realidad, puede escribir la clase de caso Foo (val bar privado: String) para obtener campos privados en las clases de caso –