【问题标题】:Odd behaviour with scala method syntaxscala 方法语法的奇怪行为
【发布时间】:2010-06-14 02:46:00
【问题描述】:

我对 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 的扩展。有什么办法可以解决这个问题,还是应该避免在此处指定返回类型?

【问题讨论】:

  • 顺便说一句,“return”关键字是多余的,可以省略。在没有显式返回语句的情况下,Scala 返回该方法计算的最后一个值。推荐的风格是避免显式方法(尤其是多次返回)。

标签: scala


【解决方案1】:

这只是关于函数语法。

如果你的函数有一个返回值,你总是将它定义为一个方程(使用=),即使一个计算块如下:

object Board {
   def getObjectAt(x:Int, y:Int):Placeable = {
      return locations(x)(y)
   }
}

符号

def func(...) { ...

是返回类型Unit的简写,即一个没有返回值的函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多