Escala | Clases de valor

Las clases de valor son un nuevo mecanismo que ayuda a evitar la asignación de objetos de tiempo de ejecución. AnyVal define clases de valor. Las clases de valor están predefinidas, coinciden con el tipo primitivo de lenguajes similares a Java.
Hay nueve tipos de valores predefinidos: Doble, Flotante, Largo, Int, Corto, Byte, Char, Unidad y Booleano.

equalso hashCodeno puede redefinir por una clase de valor. Las clases de valor se utilizan principalmente para optimizar el rendimiento y la memoria.

Entendamos las clases de valor con algún ejemplo.

Ejemplo 1:

// Scala program to illustrate value class
  
// Creating a value class and extend with AnyVal
case class C(val name: String) extends AnyVal
  
// Creating object
object gfg
{
    // Main method
    def main (args: Array[String])
    {
        // Creating the instance of the ValueClass
        val c = new C("GeeksForGeeks")
        c match 
        {   
            // new C instantiated here
            case C("GeeksForGeeks") => println("Matched with GeeksForGeeks")
            case C(x) => println("Not matched with GeeksForGeeks")
        }
    }
}

Producción:

Matched with GeeksForGeeks

En el código anterior, una clase de valor definida con la ayuda de la clase de caso, aquí AnyVal define la clase de valor (C). la clase de valor consiste en un parámetro de string. Cuando pasemos la misma string que en la declaración de caso, esto devolverá verdadero, de lo contrario, falso.

 
Ejemplo #2:

// Scala program to illustrate value class
  
// Creating a value class and extend with AnyVal
class Vclass(val a: Int) extends AnyVal 
{
    // Defining method
    def square() = a*a
}
  
// Creating object
object gfg
{
    // Main method
    def main (args: Array[String])
    {
        // creating the instance of the ValueClass
        val v = new Vclass(5)
        println(v.square())
    }
}

Producción:

25

Como podemos ver, en el ejemplo anterior, una clase de valor creada y representada es un int . El código anterior consiste en una definición en la clase de valor Vclass. Aquí hay una clase de valor definida por el usuario que envuelve el parámetro Int y encapsula un método cuadrado. Para llamar al método cuadrado, cree el objeto de la clase Vclass como: Vclass val v = new Vclass(5)

Algunas Restricciones de las Clases de Valor –

  • Es posible que una clase de valor no tenga parámetros de tipo especializados. puede no tener parámetros de tipo especializados.
  • Una clase de valor no puede tener clases, rasgos u objetos anidados o locales.
  • equalso hashCodeno puede redefinir por una clase de valor.
  • Una clase de valor no puede tener lazy vals, vars o vals como miembros. Solo puede tener defs como miembros.
  • Ninguna otra clase puede extender una clase de valor.

Publicación traducida automáticamente

Artículo escrito por DivyaPareek 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 *