You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala函数返回值问题咨询:两段求和函数为何一段报错?

Scala函数返回值问题解析

第一段代码错误原因

第一段代码:

def sum(x: Int, y: Int ): Int = {
 val sum = x+ y
}

报错的核心是代码块返回值类型不匹配。在Scala中,代码块的返回值由块内最后一个表达式的结果决定:

  • val sum = x + y是赋值语句,这类语句的返回类型是Unit(等价于Java的void,表示无实际返回值)
  • 但函数声明的返回类型是Int,因此编译器抛出类型不匹配错误:
cmd2.sc:3: type mismatch;
 found   : Unit
 required: Int

第二段代码正常运行的原因

第二段代码:

def sum(x: Int, y: Int ): Int = {
 val sum =x
 sum +y
}

代码块的最后一行是sum + y,这是一个计算表达式,结果类型为Int,和函数声明的返回类型完全匹配,因此可以正常编译运行。

关于return语句的疑问解答

你提到的“return语句不能包含多个表达式”是误解:

  1. 你的两段代码都没有用到return关键字——Scala默认采用表达式式编程风格,函数的返回值就是最后一个表达式的结果,不需要显式写return(仅在嵌套函数提前返回、跳出代码块等场景需要用到)。
  2. 如果要修改第一段代码使其正确,有两种方式:
    • 把计算结果放在代码块最后一行:
      def sum(x: Int, y: Int ): Int = {
        val sum = x + y
        sum // 最后一行是sum,类型为Int
      }
      
    • 显式使用return(不推荐,不符合Scala惯用写法):
      def sum(x: Int, y: Int ): Int = {
        val sum = x + y
        return sum
      }
      

内容的提问来源于stack exchange,提问作者RABINDRA JAISWAL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 16:39:21