Функция карты возвращает значение внутри Iterable List? Scala - PullRequest
1 голос
/ 24 апреля 2020

У меня вопрос по поводу Scala функции карты. Почему функция map возвращает результат, заключенный в коллекцию List? Пример

val exMap = Map("k" -> Map("kate" -> 34))
 exMap.map{
   case (k,v) => println(v.map(_._2))
   }

Почему это дает output : List(34) вместо 34?

Ответы [ 2 ]

3 голосов
/ 24 апреля 2020

Здесь v представляет внутренний

Map("kate" -> 34) 

, который может содержать столько же значений, например

Map("kate" -> 34, "sam" -> 43)

, а во фрагменте кода выше с переменной "v" мы представляем значения этого карта интервалов, которая выглядит как List (34, 43)

Здесь в вашем примере карта содержит только одну пару ключ-значение, но может иметь столько пар ключей-значений, поэтому возвращением выборки всех значений является List (values)

1 голос
/ 24 апреля 2020
val exMap = Map("k" -> Map("kate" -> 34),"a" -> Map("abe" -> 31))
    exMap.map{
      case ( k :String,v : Map[String,Int]) => println(
        v //  Map("kate" -> 34) , Map("abe" -> 31)
          .map(
            _._2 // 34, 31
          )
        .foreach(println(_)) //place to retrieve each element and perform action over it
      )
    } // by default map will collect all the returning value to a single list
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...