【问题标题】:Map function returns value inside Iterable List ? ScalaMap 函数在 Iterable List 中返回值?斯卡拉
【发布时间】:2020-08-07 20:25:27
【问题描述】:

我有一个关于 Scala 映射函数的问题。 为什么 map 函数返回包装在 List 集合中的结果? 示例

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

为什么这是output : List(34) 而不是 34 ?

【问题讨论】:

    标签: scala dictionary hashmap


    【解决方案1】:

    这里v代表内部

    Map("kate" -> 34) 
    

    可以包含尽可能多的值,例如

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

    在上面带有变量“v”的代码 sn-p 中,我们表示这个区间映射的值,结果是 List(34, 43)

    在您的示例地图中,此处仅包含单个键值对,但可以具有尽可能多的键值对,因此获取所有值的返回是 List(values)

    【讨论】:

    • 我应该怎么做才能在迭代中检索每个元素而不是元素列表?我似乎可以理解它背后的直觉
    【解决方案2】:
    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
    

    【讨论】:

    • 如果我们打印得到 List(34) 而不是 34 的值,则在第二个地图中
    • 请使用我现在在ans中更新的foreach
    猜你喜欢
    • 2013-09-26
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多