Scala case类和case对象用法详细示例

Scala case类只是常规类, 默认情况下是不可变的, 可通过模式匹配将其分解。

它使用均等方法在结构上比较实例。它不使用new关键字实例化对象。

case类中列出的所有参数都是公共的, 默认情况下是不可变的。


句法

case class className(parameters)

Scala case类示例

case class CaseClass(a:Int, b:Int)

object MainObject{
    def main(args:Array[String]){
        var c =  CaseClass(10, 10)       // Creating object of case class
        println("a = "+c.a)               // Accessing elements of case class
        println("b = "+c.b)
    }
}

输出

a = 10
b = 10

case类支持模式匹配。因此, 你可以在模式中使用它。以下是case类和模式的示例。

Scala case类和模式匹配示例

没有参数的case类被声明为case对象, 而不是case类。 case对象默认情况下是可序列化的。

trait SuperTrait
case class CaseClass1(a:Int, b:Int) extends SuperTrait
case class CaseClass2(a:Int) extends SuperTrait			// Case class
case object CaseObject extends SuperTrait				// Case object
object MainObject{
    def main(args:Array[String]){
        callCase(CaseClass1(10, 10))
        callCase(CaseClass2(10))
        callCase(CaseObject)
    }
    def callCase(f:SuperTrait) = f match{
        case CaseClass1(f, g)=>println("a = "+f+" b ="+g)
        case CaseClass2(f)=>println("a = "+f)
        case CaseObject=>println("No Argument")
    }
}

输出

a = 10 b =10
a = 10
No Argument
微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?