scala中样例的使用

样例类

在scala中样例类是一种特殊的类,一般用于保存数据,在并发编程,Spark ,Flume 开发中会经常用到它。

格式:

case class className([var/val] 变量1:类型,变量2:类型){}
  1. 如果有不写,则变量的修饰符默认为 val, 即 val 可以省略不写

  2. 如果要实现某个成员变量值可以被修改,则需要手动添加 Var 来修饰此变量

参考代码:

Object demo{
    // 定义样例类
    case class Person(name:String="张三",var age:Int = 20){}
    // 定义main方法
    def main(args:Array[String]) Unit: = {
        // 未修改
        val p = new Person
        println(s"${p.name},${p.age}")
        // 修改后
        p.age = 30
        println(s"${p.name},${p.age}") 
    }
}

默认方法:

  1. apply() 方法

    可以让我们快速使用类名创建对象,省去了 new 这个关键字

    val p = Pserson()
  2. toString() 方法

    可以让我们通过输出语句打印对象时,之间打印该对象的各个属性值

  3. equals() 方法

    可以让我们直接使用 == 来判断两个样例对象的所有成员对象值是否相等

  4. hashCode() 方法

    用来获取对象的哈希值,即:同一对象哈希值肯定相同。

  5. copy() 方法

    用来快速创建一个属性值相同的实例对象,还可以使用带参数的形式给指定成员变量赋值

  6. unapply() 方法

    一般用作提取器

样例对象

在 Scala中 使用 case 修饰的单例对象就叫 样例对象,而且他没有主构造器,主要用于:

  1. 当做枚举值使用

  2. 作为没用任何参数的消息传递

格式:

case object 样例对象名

参考代码:

Object demo{
    trait Sex
    case object Male extends Sex
    case object Female extends Sex
    case class Person(var name:String,var age:Sex){}
    def main(args:Array[String]) Unit: = {
        val p = new Person("张三",Male)
        println(p)
    }
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注