【问题标题】:overload method needs result type in Scala?Scala中的重载方法需要结果类型吗?
【发布时间】:2016-03-10 04:05:18
【问题描述】:

这是我的代码,实际上我不需要任何返回值和类型,想知道如何处理这个错误?

“重载方法需要结果类型”的错误在这一行foo (start, end, 14)

object HelloWorld {

  def foo(start: String, end: String) = {
     foo (start, end, 14)
  }

  def foo(start: String, end: String, id: Int) = {
     println("Hello, world!")
  }

  def main(args: Array[String]): Unit = {

    foo("hello", "scala")
  }
}

更正的代码版本,

object HelloWorld {

  def foo(start: String, end: String): Unit = {
     foo (start, end, 14)
  }

  def foo(start: String, end: String, id: Int): Unit = {
     println("Hello, world!")
  }

  def main(args: Array[String]): Unit = {

    foo("hello", "scala")
  }
}

提前致谢, 林

【问题讨论】:

  • 根据我的理解,Scala 中的重载函数总是需要明确的返回值。在这种情况下,返回值将是 Unit
  • @kaskelotti,投赞成票。我已经发布了代码的更正版本,测试了它的工作原理,如果你能再次确认我的修复是正确的,那就太好了。 :)

标签: scala


【解决方案1】:

这是我的代码,实际上我不需要任何返回值和类型,想知道如何处理这个错误?

你会的。 Scala 不允许你有两个 foo 方法而不指定返回类型(在这种情况下都是 Unit)。

【讨论】:

  • 感谢 Alexey,投票。我已经发布了代码的更正版本,测试了它的工作原理,如果你能再次确认我的修复是正确的,那就太好了。 :)
  • 是否有一些文档作为 Scala 需要您告诉它返回类型的两个原因?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-26
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多