Clase de muestra Scala

Directorio de artículos


1. Información general

En Scala, la clase de muestra es una clase especial, generalmente utilizada para guardar datos (similar a la clase POJO de Java), a menudo se usa en programación y marcos concurrentes como Spark y Flink.

2. Formato

case class 样例类名([var/val] 成员变量名1:类型1, 成员变量名2:类型2, 成员变量名3:类型3){
    
    }
  • El modificador de variable no se puede escribir, si no escribe, el modificador predeterminado es val
  • Si desea darse cuenta de que el valor de una variable miembro se puede modificar, debe agregar manualmente var para modificar esta variable

3. Caso

demanda:

  • Defina la clase de muestra Person, que contiene dos variables miembro: nombre y edad.

    其中: 姓名用val修饰, 年龄用var修饰

  • Cree un objeto de la clase Person en la clase de prueba e imprima sus valores de atributo.

  • Intente modificar los valores de las dos variables miembro, nombre y edad, y observe los resultados.

Código:

object demo {
    
    
  //1. 创建一个Person样例类, 属性为: 姓名, 年龄.
  case class Person(name:String = "张三",var age:Int = 23) {
    
    }

  def main(args: Array[String]): Unit = {
    
    
    //2. 创建Person类型的对象, 然后打印属性值.
    val p = new Person()
    println(p)
    //3. 尝试修改对象p的属性值
    //p.name = "李四"     //这样写会报错, 因为样例类的成员变量默认修饰符是: val
    p.age = 24
    println(p)
  }
}

4. El método predeterminado en la clase de muestra

Cuando definimos una clase de muestra, el compilador nos ayudará automáticamente a generar algunos métodos, los que se usan comúnmente son los siguientes:

  • aplicar () método
  • método toString ()
  • método equals ()
  • método hashCode ()
  • método copy ()
  • método unapply ()

Función detallada:

  • aplicar () método

    • Nos permite usar rápidamente el nombre de la clase para crear objetos, eliminando la nueva palabra clave.
    • P.ej: val p = Person()
  • método toString ()

    • Nos permite imprimir el valor de cada atributo del objeto directamente al imprimir el objeto a través de la declaración de salida.
    • P.ej: println(p) 打印的是对象p的各个属性值, 而不是它的地址值
  • método equals ()

    • Se puede utilizar directamente ==para comparar si los valores de todas las variables miembro de los dos objetos de clase de muestra son iguales.
    • P.ej: p1 == p2 比较的是两个对象的各个属性值是否相等, 而不是比较地址值
  • método hashCode ()

    • Se utiliza para obtener el valor hash de un objeto, es decir, el valor hash del mismo objeto debe ser el mismo y el valor hash de diferentes objetos es generalmente diferente.
  • P.ej:

    val p1 = new Person("张三", 23)
    val p2 = new Person("张三", 23)
    println(p1.hashCode() == p2.hashCode())		//结果为: true
    
  • método copy ()

  • Puede usarse para crear rápidamente un objeto de instancia con el mismo valor de atributo, y también puede asignar un valor a una variable miembro especificada en forma de un parámetro con nombre.

  • P.ej:

    val p1 = new Person("张三", 23)
    val p2 = p1.copy(age = 24)
    println(p1)		//结果为: 张三, 23
    println(p2)		//结果为: 张三, 24
    
  • método unapply ()

    • Se usa generalmente 提取器, pero requiere algunos conocimientos previos, que aún no hemos aprendido, y se explicarán en detalle en capítulos posteriores.

Supongo que te gusta

Origin blog.csdn.net/zh2475855601/article/details/114766136
Recomendado
Clasificación