Извлечение данных из базы данных Firebase

Причина такого поведения соответствия scala-шаблонов лежит в системе типов. Scala имеет очень прочную систему типов, которая обеспечивает высокую степень безопасности и улавливает ошибки во время компиляции. Если вы объявляете функцию с параметром вместо Any, она также выдает ту же ошибку.

Для ex: -

def echoWhatYouGaveMe(x: (Int, Int)): String = x match {

  case (a, b) => s"got $a and $b"
  case (a, b, c) => s"got $a, $b, and $c"
  case _ => "Unknown"
}

echoWhatYouGaveMe((1,2))

Вы получаете сообщение об ошибке

Error:(4, 9) constructor cannot be instantiated to expected type;
 found   : (T1, T2, T3)
 required: (Int, Int)
  case (a, b, c) => s"got $a, $b, and $c"
       ^

Если вы изменяете свой val myTuple и явно устанавливаете его тип в Any, это позволит вам выполнить сопоставление с образцом.

val myTuple: Any = (1, 2, 3)

val toPrint = myTuple match {
  case (a, b, c) => s"got $a, $b, and $c"
  case (a, b) => s"got $a and $b"
  case _ => s"Unknown data"
}

Вы получаете такой же результат

myTuple: Any = (1,2,3)

toPrint: String = got 1, 2, and 3
0
задан Joakim Danielson 6 April 2019 в 21:05
поделиться