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.
equals
o hashCode
no 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.
equals
ohashCode
no 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