6

Scala は、封印された型のパターン マッチが網羅的でない場合に警告できますが、戻り値の型が封印されている場合、関数がすべてのケースを返すことを確認できますか? たとえば、次の ADT を検討してください。

sealed trait Foo
case object Bar extends Foo
case object Qux extends Foo

次にf: Foo => String、代数データ型の関数Foo

def f(x: Foo): String = x match {
  case Bar => "bar"
}

警告を発する

match may not be exhaustive.
It would fail on the following input: Qux
def f(x: Foo) = x match {

の次の実装のように、戻り値の型が ADT の場合、同様の非枯渇警告を発生させることは可能ですかf: String => Foo?

def f(x: String): Foo = x match {
  case "bar" => Bar
  // warn because we never return Qux 
}
4

2 に答える 2