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.未指定的值参数值." 并且不会让我编译脚本.
代替
// 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)
这也有效:
(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)