Почему это не дает ошибки типа?

Я ожидаю, что это даст мне ошибку типа, поскольку (String, String)в случае elseне равно Pair.

case class Pair(x: String, y: String)

val value = Console.readLine.toBoolean

val Pair(x, y) =
  if (value) Pair("foo", "bar")
  else false

Вместо этого, если я ввожу false, я получаю следующую ошибку во время выполнения.

scala.MatchError: (foo,bar) (of class scala.Tuple2)

Я предполагаю, что деконструкция — это просто сахар для присвоения результата переменной типа Anyи последующего сопоставления с ним, но, к сожалению, Scala позволяет этому летать

10
задан schmmd 16 March 2012 в 20:04
поделиться