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