我是斯卡拉的新手。这是我的代码片段
var test_Id:Int = 0
def getTestID():Int = {
synchronized {
return test_Id = test_Id+1
}
这给我一个编译错误
type mismatch; found : Unit required: Int HelloWorld.scala
我将test_Id定义为Int。但是当我试图返回时,它不会被识别为Int。我应该如何将其作为Int
返回答案 0 :(得分:4)
分配的类型为Unit
,因此您需要将更新与读取分开:
def getTestID() : Int = {
synchronized {
test_Id = test_Id+1
test_Id
}
}
答案 1 :(得分:0)
在Scala中,每个语句都是表达式,它产生一个值。将返回在方法的最后一行评估的表达式。分配操作被评估为类型单位。 因此,您需要将赋值表达式与返回值表达式分开。
var test_Id:Int = 0
def getTestID():Int = {
synchronized {
test_Id = test_Id+1
test_Id // return keyword is optional.
}