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

Kotlin代码出现Kotlin.Unit输出的原因及修复方案

为什么Kotlin函数返回Kotlin.Unit而非预期计算结果?

问题原因

在Kotlin中,如果函数没有显式声明返回类型且未通过return返回值,函数默认返回Unit类型——这是Kotlin用来表示“无返回值”的特殊类型,等价于Java中的void。

看你的错误代码:

fun main(){
val cal = cals(15,3,"/")
    println(cal)
}

fun cals(num1:Int,num2:Int,operation:String){
     when (operation) {
        "+" -> num1 + num2
        "-" -> num1 - num2
        "*" -> num1 * num2
        "/" -> num1 / num2
        else -> 0
    }
}

这个cals函数没有声明返回类型,内部的when表达式虽然执行了数值计算,但这些计算结果并没有被返回给调用方。函数默认返回Unit实例,所以你用val cal = cals(...)接收的其实是Unit,println(cal)自然会输出Kotlin.Unit。

修复方法

要让函数返回计算结果,需要做两个关键修改:

  1. 给函数显式声明返回类型(这里是Int)
  2. 通过return返回when表达式的结果(Kotlin中when是表达式,本身可以作为返回值)

修复后的正确代码:

fun main(){
val cal = cals(15,3,"/")
    println(cal) // 输出预期结果5
}

fun cals(num1:Int,num2:Int,operation:String):Int {
    return when (operation) {
        "+" -> num1 + num2
        "-" -> num1 - num2
        "*" -> num1 * num2
        "/" -> num1 / num2
        else -> 0
    }
}

另外,Kotlin支持单表达式函数的简化写法,你可以进一步省略return和大括号,让代码更简洁:

fun cals(num1:Int,num2:Int,operation:String):Int = when (operation) {
    "+" -> num1 + num2
    "-" -> num1 - num2
    "*" -> num1 * num2
    "/" -> num1 / num2
    else -> 0
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:32:54