0
ハンドルメソッドで任意のAnimal型を取得し、実際に処理できるように特定の型を持つことができるようにします。形質を使用するときにハンドルメソッドを多態性にする方法
私はちょうど私が探しています何のスケッチ:
sealed trait Animal
case class Dog(id: Int) extends Animal
case class Cat(id: Int) extends Animal
case class Owl(id: Int) extends Animal
object AnimalHandler {
def handle(animal: Animal) = animal match {
case Dog => processDog(dog)
case Cat => processCat(cat)
}
}
どのように私は上記のように動作するように自分のドメインを設計することができますか?
をスキップすることができ、これは動作しますが、あなたは明示的にcase文にキャストしなければなりません実際のタイプを取得する権利はありますか? –
JavaのSwitch/Case文ははるかに制限されています。 'x:Type'構文は、"このパターンはType型の単一の値で構成されています。これをxと呼んでいます "と言っています。代わりに、あなたが犬を渡した場合は、犬のIDを持つidという名前の値を取得する、パターンとして 'Dog(id)'のようなものを使うことができます。 –
パターンマッチングを使用して値を抽出する方法のいくつかの例を追加しました.HTH –