Доступ к элементу list.toArray по индексу - PullRequest
1 голос
/ 20 сентября 2019

Я хочу получить доступ через однострочник к элементу списка в массив по индексу.

Это дает мне ошибку:

Array(1,2,3)(2)  // 3
List(1,2,3).toArray(2) // error 
(List(1,2,3).toArray)(2) // error

// error: type mismatch;
// found   : scala.this.Int(2)
// required: reflect.this.ClassTag[?]

Однако это работает:

val a = Array(1,2,3)
val b = List(1,2,3).toArray


println(a(2))  // 3
println(b(2))  // 3

Почему это так, и как сделать решение без лишних val?

Скала Фиддл

Ответы [ 2 ]

1 голос
/ 20 сентября 2019

Тип проверки делает неправильный выбор.Попробуйте дать подсказку.

println((List(1,2,3).toArray: Array[Int])(2)) 
0 голосов
/ 20 сентября 2019

Индексом для коллекции обычно является метод подслащенного .apply().

Array(1,2,3,4).apply(2)       //res0: Int = 3
List(1,2,3).toArray.apply(2)  //res1: Int = 3

Но неясно, зачем вам нужно преобразование Array.

List(1,2,3)(1)  //res2: Int = 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...