Objetos complementarios en Scala

Mohammad Irfan 21 junio 2023
Objetos complementarios en Scala

Este tutorial analizará los objetos complementarios con ejemplos en ejecución en Scala.

Objetos complementarios en Scala

Un objeto complementario es un objeto con el mismo nombre que la clase y se declara en un archivo similar a una clase.

Por ejemplo, si tenemos un objeto Color con el mismo nombre que el nombre de la clase y el archivo se guarda como Color.scala, este objeto se considerará un objeto complementario en Scala.

Ejemplo:

class Color {
}
object Color {
}
// Color.scala

El beneficio de usar un objeto complementario es que tanto la clase como el objeto ahora pueden acceder a los miembros privados del otro. Scala no usa el concepto estático, pero podemos usar los objetos complementarios para recopilar un concepto similar.

Crear objetos sin utilizar la palabra clave nueva

Agregar un método aplicar () a un objeto complementario nos permite crear objetos sin usar la palabra clave nuevo.

Ejemplo:

class Color(val name: String){
    private  var _defaultname: String = "White"
     def get():String = _defaultname
}

object Color {
  def apply(name: String): Color = new Color(name)
}

object MyClass {

    def main(args: Array[String]) {
        val color = Color("Red")
        println(color.name)
    }
}

Producción :

Red

Deconstruir la instancia de una clase

De manera similar, podemos usar el método unapply() para deconstruir la instancia de la clase. Obtenemos un error si intentamos acceder a sus miembros después de la función unapply().

Ejemplo:

class Color(val name: String){
    private  var _defaultname: String = "White"
     def get():String = _defaultname
}

object Color { // unapply function
  def unapply(name: String): Color = new Color(name)
}

object MyClass {

    def main(args: Array[String]) {
        val color = Color("Red")
        println(color.name)
    }
}

Producción :

error: Color.type does not take parameters
        val color = Color("Red")
                         ^