私はJavaのバックグラウンドを持つscalaが初めてです。
ケースクラスとして葉を持ち、ノード抽象クラスまたは特性を持つクラス継承ツリーでスーパークラス(または特性)をパターンマッチする方法はありますか? 私の知る限り、ケース クラスの継承は許可されていません。
大きな継承ツリーの抽象クラスのパターンマッチングは非常に役立つと思います
次のコードでは、コンパイル中の match ステートメント エラーの最後のケース
sealed trait Person {
def name: String
}
case class Customer(name: String, email: String) extends Person
sealed trait Employee extends Person {
def id: Int
}
case class Worker(name: String, id: Int, skills: Array[String]) extends Employee
case class Manager(name: String, id: Int, title: String) extends Employee
def process(p: Person) = p match {
case Customer(_, email) => email
case Employee(name, _) => name + "@acme.com"
}