Anulación de accesores y mutadores en Scala

Scala no ha solucionado una forma estandarizada de anular los accesores y mutadores predeterminados; sin embargo, los usuarios de este lenguaje de programación usan un método específico y común para anular, que se analiza en detalle a continuación. 

Antes de comenzar, ¿qué son los accesorios y los mutadores?  
Accessors y Mutators simplemente se pueden decir como métodos get y set respectivamente. Los accesores se utilizan para acceder a los datos mediante el uso de variables o constantes, lo que ayuda a un usuario a recuperar la información, funciona de manera similar a un método ‘Obtener’ en Java y Mutators, lo que significa cambiar, donde las variables se cambian mediante una llamada a la función y se asignan un nuevo valor, funcionan de forma análoga al método ‘Set’ en Java.

Considere el siguiente código Java usando métodos set y get para una clase Employee: 

Java

public class Employee {
    private String name;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
}

Si intenta escribir un código para una clase llamada Empleado con un parámetro de constructor llamado ‘nombre’ e intenta crear métodos de obtención y configuración, de acuerdo con las convenciones de Scala, su código no se compilará. 

// error: this won't work
class Employee(private var name: String) {
  def name = name
  def name_=(aName: String) { name = aName }
}

Al compilar este código, se producen los siguientes errores:

Person.scala:3: error: el nombre del método sobrecargado necesita el tipo de resultado 
def nombre = nombre 

Person.scala:4: error: referencia ambigua a la definición sobrecargada, 
ambos nombre del método_= en clase Empleado de tipo (aName: String) Unidad 
y método nombre_= en clase Empleado de tipo (x$1: String) 
Tipos de argumento de coincidencia de unidad (String) 
def nombre_=(aNombre: String) { nombre = aNombre } 

Person.scala:4: error: método nombre_= se define dos veces 
def nombre_ =(aName: String) { name = aName } 

tres errores encontrados

El compilador de Scala se queja de la colisión de nombres entre el campo ‘nombre’ y el método ‘nombre’. Una forma sencilla de resolver este error es agregar un guión bajo a la variable de campo. Esto resuelve la ambigüedad.

Nota: El guión bajo se usa en la posición de prefijo en lugar de la posición de sufijo para evitar el peligro de escribir por error ‘nombre _’ en lugar de ‘nombre_’. Un error al escribir al revés podría conducir potencialmente a un error muy confuso debido al uso intensivo de la inferencia de tipo de Scala. 

class Employee(private var _name: String) {
  def name = _name                             // accessor
  def name_=(aName: String) { _name = aName }  // mutator
} 

La forma de llamar a los métodos constructores es la siguiente:

val e = new Employee("Adelicia")
e.name = "Alice"    // setter
println(e.name)    // getter

También hay otros enfoques para nombrar métodos getter y setter.
 

Publicación traducida automáticamente

Artículo escrito por Vijayalakshmi_Bhagat y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *