ケースクラスの封印されたトリオがあります。Scala は、この一致が完全かどうかを教えてくれますか (私はそうではないと思います)?
value match {
case a: A => methodThatNeedsA(a)
case b: B => methodThatNeedsB(b)
case c: C => methodThatNeedsC(c)
}
私は次のことを行うことができますが、これは網羅的であることを理解していますが、式を分解する必要がないため、非常に面倒に見えます。
value match {
case a @ A(_) => methodThatNeedsA(a)
case b @ B(_, _) => methodThatNeedsB(b)
case c @ C(_, _, _) => methodThatNeedsC(c)
}
純粋にタイプに基づいて、このようにディスパッチするより良い方法はありますか?