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

Scala类中方法被强制指定Unit返回类型的原因咨询

问题原因解析

这是Scala的表达式返回规则导致的:Scala中没有显式return的情况下,代码块的返回值就是块内最后一行表达式的结果。

看你的第一个写法:

def + (that: Private_Rational): Private_Rational = {
    new Private_Rational(numer * that.denom + that.numer * denom, denom * that.denom)
    println("I'm in first plus")
}

块内最后一行是println语句,而println方法的返回类型是Unit(相当于Java里的void),但你声明方法要返回Private_Rational,类型不匹配,所以编译器强制要求你把返回类型改成Unit。

再看修改后的写法:

def + (that: Private_Rational): Private_Rational = {
    println("I'm in first plus") //Moved println here
    new Private_Rational(numer * that.denom + that.numer * denom, denom * that.denom)
}

此时块内最后一行是new Private_Rational(...),这行表达式的返回类型正好是你声明的Private_Rational,类型匹配,所以代码能正常编译运行。

简单总结:Scala代码块默认返回最后一行的结果,别把非目标返回值的语句放在方法代码块的最后一行。

内容的提问来源于stack exchange,提问作者Raj Ramaswamy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:51:20