Как вытащить элемент из подсписка? - PullRequest
1 голос
/ 10 ноября 2019

Я составил список для хранения некоторых последовательностей данных, где каждая последовательность содержит три элемента. Как извлечь один из элементов из последовательности?

Я пробовал скобки, такие как alco (0) (1) и get (), и они не работают.

val alco = List(("Light Beer", "4%", "23 OZ"), ("Regular Beer", "6%", "23 OZ"))

val temp = alco(0).get(1)

println(temp)

Результат показывает:

ошибка: значение get не является членом (String, String, String) val temp = alco (0) .get (1)

Ответы [ 2 ]

2 голосов
/ 10 ноября 2019
scala> val alco = List(("Light Beer", "4%", "23 OZ"), ("Regular Beer", "6%", "23 OZ"))
alco: List[(String, String, String)] = List((Light Beer,4%,23 OZ), (Regular Beer,6%,23 OZ))

scala> val (_, temp, _) = alco(0)
temp: String = 4%

scala> val temp = alco(0)._2
temp: String = 4%

Помните, что доступ к списку Scala по индексу имеет O(n) сложность, где n - размер списка. Поэтому, если вы хотите перебрать их - предпочтите использовать map, collect, foldLeft или foreach вызовы:

scala> alco.map { case (_, temp, _) => temp }
res0: List[String] = List(4%, 6%)

scala> alco.foreach { x => println(x._2) }
4%
6%
1 голос
/ 10 ноября 2019

Как отметил @Andriy:

val alco = List(("Light Beer", "4%", "23 OZ"), ("Regular Beer", "6%", "23 OZ"))

относится к типу List[Tuple3[String, String, String]], и, поскольку Tuple3 не имеет метода get, вы получаете сообщение об ошибке.

scala.Tuple3

Для решения проблемы просто определите свой список следующим образом:

val alco = List(List("Light Beer", "4%", "23 OZ"), List("Regular Beer", "6%", "23 OZ"))

Таким образом, он будет иметь тип List[List[String]], и ваш код должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...