我点了一点scala的语法,我真的不明白
object Board {
def getObjectAt(x:Int, y:Int):Placeable = return locations(x)(y)
}
工作正常。但
object Board {
def getObjectAt(x:Int, y:Int):Placeable {
return locations(x)(y)
}
}
返回错误
Board.scala:8: error: illegal start of declaration
return locations(x)(y)
我发现一些东西说第二种形式说服scala编译器你试图指定一个扩展到返回类型Placeable
。有没有办法解决这个问题,或者我应该避免在这里指定一个返回类型?
答案 0 :(得分:10)
这只是功能语法。
如果您的函数有返回值,您将始终将其定义为等式(使用 = ),即使计算块如下:
object Board {
def getObjectAt(x:Int, y:Int):Placeable = {
return locations(x)(y)
}
}
符号
def func(...) { ...
是返回类型Unit
的简写,即函数没有返回值。