2016-11-27 2 views
0

Я новичок в программировании Scala, и функция flatmap дает мне головную боль.Scala - Как преобразовать карту [Int, List [List [IntVar]]] в

Прежде чем вы попросите меня выполнить поиск, я провел некоторое исследование по Stackoverflow: https://stackoverflow.com/search?q=scala+map+to+list, но я не нашел что-то легко решить мою проблему.

Вот моя проблема:

Для программирования Scala проекта с Jacop (http://jacopguide.osolpro.com/guideJaCoP.html),

Мне нужно преобразовать этот вид карты

Map[Int,List[List[IntVar]]] 

к:

List[T] 
// In my case , only a List[IntVar] 

Я знаю, что должен использовать несколько раз flatMap, но мне интересно, как правильно я использую это в моем случае.

Спасибо за вашу помощь

+0

Вы должны представить ожидаемый вход/выход. – Carcigenicate

+0

Вы хотите, чтобы каждый «IntVar» в значениях карты был в списке результатов? – marstran

ответ

2

Если вы хотите каждый IntVar из значений карты, вы могли бы это:

map.values.flatten.flatten.toList 

Вызов values возвращает Iterable, содержащий все значения карты , В этом случае он возвращает объект типа Iterable[List[List[IntVar]]]. Первый flatten -call на этом объекте сглаживает его до Iterable[List[IntVar]]. Второй flatten -call сглаживает этот объект далее до Iterable[IntVar]. Наконец, метод toList преобразует его в List[IntVar].

+0

Спасибо вам за ваше объясненное решение :) – jy95

Смежные вопросы