Необходимо получить список из вектора опций

#scala #list #vector #tuples #option

#скала #Список #вектор #кортежи #опция

Вопрос:

У меня есть вектор выбора списка кортежей, например

 val x = Vector(
Some(List(("x",2))),
Some(List(("x",2),("y",3))),
None,
Some(List(("x",2),("z",2))),
Some(List(("x",2),("z",2))),
None)
 

Как получить список из приведенного выше вектора

Обновленный:

Конечная цель — получить общее количество элементов в списке (у нас есть только три элемента x, y или z).

например, общее количество x вернет 8, а общее количество y вернет 3, а общее количество z вернет 4

Нравится

 val totalx = x.flatten.filter ....  
 

Комментарии:

1. Не могли бы вы предоставить правильный код

2. И уточнение, то, что вы ожидаете вместе с вашей попыткой, было бы неплохо

3. Извините, я не вижу Vector здесь и some не компилируется. можете ли вы предоставить действительный код?

Ответ №1:

 x.flatMap {
  case Some(l) => l.filter(_._1=="x").map(_._2)
  case None => List(0)}.sum
 

Ответ №2:

Извините, я получил ответ

 x.flatten.flatten.filter(x => x._1 == "y").map(x => x._2).sum
 

используется flatten для удаления none, а затем снова используется flatten для получения всего кортежа flatten, затем фильтрация и подведение итогов