Я ожидаю, что это даст мне ошибку типа, поскольку (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 позволяет этому летать