如何在scala中传递HashMap变量参数的元组?

Elo*_*noa 1 arguments scala tuples return

我想使用从方法返回的元组来创建一个新的hashmap项,但是当我这样写时它会给我错误

var data= HashMap[String,String]()
data.update(choose("name"))

def choose(a:String):(String,String)= return (a, "Pete")
Run Code Online (Sandbox Code Playgroud)

你如何使用元组更新hashmap?

Eclipse IDE告诉我"没有足够的方法更新参数:( key:String,value:String)Unit.未指定的值参数值." 并且不会让我编译脚本.

Vla*_*dim 6

代替

// update requires a separate parameters for key and value
data.update(choose("name")) // won't compile !

// the following will work
val (key,value) = choose("name")
data.update (key,value)
Run Code Online (Sandbox Code Playgroud)

使用

data+=choose("name") // += takes (key,value) tuple as a parameter
Run Code Online (Sandbox Code Playgroud)


dhg*_*dhg 6

这也有效:

(data.update _).tupled(choose("name"))
Run Code Online (Sandbox Code Playgroud)

tupled 将需要多个参数的函数转换为需要参数元组的函数.

在你的情况下,它不像弗拉德的方法那样干净,但是,一般来说,tupled当你有一个包含你的参数的元组时,可以使用它.

val f = (a: String, b: String, c: String) => a + b + c
val myargs = ("1", "2", "3")
println(f.tupled(myargs)) // produces "123"
Run Code Online (Sandbox Code Playgroud)