Выполняю код в интерпретаторе:
scala> val coords = Vector((0,0))
coords: scala.collection.immutable.Vector[(Int, Int)] = Vector((0,0))
Далее пишу
scala> val (x, y) = coords(0)
Получаю длиннейший стек, вот что на вершине:
java.lang.AssertionError: assertion failed: List(value _1$mcI$sp, value _1$mcI$sp, value _1$mcI$sp)
at scala.reflect.internal.Symbols$Symbol.suchThat(Symbols.scala:1916)
При этом есть способ обойти это поведение через присваивание в промежуточную переменную:
scala> val z = coords(0)
z: (Int, Int) = (0,0)
scala> val (x, y) = z
x: Int = 0
y: Int = 0
Есть у меня подозрение, что Scala не может автоматически вывести тип в этом выражении.
val (x, y) = coords(0)
Правильно ли я понимаю или причина в чём-то другом?