播放scala函数多次返回多个项目

时间:2014-03-17 23:32:29

标签: json scala playframework-2.0

我有一个返回Long的函数和一个Json对象,我希望使用相同的变量名称多次调用它。

def returnMultipleItems (): (Long, JsObject) = {

    val number:Long = 123

    val json = Json.obj(
        "Name" -> "Tom",
        "age" -> 42
    )

    return(number, json)
}

调用这样的函数时效果很好。

var (number, json) = returnMultipleItems    
println("Number = " + number, ", Json = " + json)

我想使用相同的变量名称调用该函数两次或更多次。有了这个我收到错误消息,如“;”预计会发现“=”。

var number:Long = 0
var json:JsObject = Json.obj()

(number, json) = returnMultipleItems // Call the function

(number, json) = returnMultipleItems // Call the function again

2 个答案:

答案 0 :(得分:1)

Scala不接受多个变量分配。但是,您的第一个示例有效,因为Scala将表单var (x, y) = (1, 2)解释为模式匹配

完整说明为here,解决方法为here

答案 1 :(得分:1)

可能不是您正在寻找的,但您可以将变量分配给元组(而不是内容),例如。

var numJson = returnMultipleItems
println("Number = " + numJson._1, ", Json = " + numJson._2)
numJson = returnMultipleItems
println("Number = " + numJson._1, ", Json = " + numJson._2)