Scala - 如何按功能返回Map值?

loa*_*zzz 0 scala

为什么下面的函数在scala中不起作用?

def getUpdatedMap(keywords: String, m: Map[String, String]) : Map[String, String] = {
  m += (keywords -> "abcde")
}
Run Code Online (Sandbox Code Playgroud)

编译错误:值+ =不是Map [String,String]的成员

我在Scala中很新,我忘记定义或丢失的任何东西?谢谢.

Pet*_*ens 7

你混淆了不可变Map可变Map.

// import mutable map as MutableMap
import scala.collection.mutable.{Map => MutableMap}

val mmap = MutableMap("a" -> 1)
mmap += "b" -> 2 // mutates original map
// mmap = Map(b -> 2, a -> 1)

// use immutable map
val imap = Map("c" -> 3)
val updatedIMap = imap.updated("d", 4) // returns a new updated immutable map
// imap = Map("c" -> 3)
// updateIMap = Map(c -> 3, d -> 4)
Run Code Online (Sandbox Code Playgroud)


Chr*_*tin 7

你完全没有遗漏任何东西.Map正如+=编译器所说,只是没有方法.查看API文档.

我想你想要的方法是+.

def +[B1 >: B](kv: (A, B1)): Map[A, B1]

向此地图添加键/值对,返回新地图.

def getUpdatedMap(keywords: String, m: Map[String, String]):
  Map[String, String] = m + (keywords -> "abcde")
Run Code Online (Sandbox Code Playgroud)