【问题标题】:Return value of Function Scala函数 Scala 的返回值
【发布时间】:2015-06-29 11:18:56
【问题描述】:

我在 Scala 中有以下程序:

object Ch4 {

        def main(args: Array[String]) {
      println("Hello, world!")
      val x = sortMap()
      println(x)
    }                                             //> main: (args: Array[String])Unit

    def sortMap ( ) {
        val scores = scala.collection.immutable.SortedMap ( "Alice" -> 10, "Fred" -> 7, "Bob" -> 3)
        return scores
    }                                             //> sortMap: ()Unit
}  

我很困惑为什么sortMap 函数有返回类型Unit 尽管Map。还有为什么在main 函数中没有得到print

【问题讨论】:

  • 你需要使用def sortMap ( ) = { ... }
  • 更改后,我收到此错误“方法 sortMap 有返回语句;需要结果类型”
  • 错误已被删除,但在 Scala 工作表的主函数中仍然没有打印任何内容
  • 好吧,那就加一个返回类型或者不使用return语句,按照错误提示。坦率地说,在寻求帮助之前,您至少可以阅读一些有关 Scala 的基本教程或介绍。

标签: scala


【解决方案1】:

def name() { ... } 形式的方法定义隐式返回 Unit。您需要添加返回类型并添加=

def sortMap(): SortedMap[String, Int] = {
    val scores = scala.collection.immutable.SortedMap ( "Alice" -> 10, "Fred" -> 7, "Bob" -> 3)
    return scores
}

或者简单地说:

def sortMap() = SortedMap("Alice" -> 10, "Fred" -> 7, "Bob" -> 3)

【讨论】:

  • 我在文档中读到的是,我们不必告诉 Scala 中函数的返回类型。仅对于递归函数,返回类型是强制性的。那为什么这里需要呢?
  • @neel - 这是因为您使用的是明确的return,请参阅this question。 scala 中很少需要显式返回。
猜你喜欢
  • 2016-11-17
  • 1970-01-01
  • 2021-10-07
  • 2020-03-20
  • 2020-09-19
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
  • 2021-12-21
相关资源
最近更新 更多