为什么我会得到“Kotlin”错误以及如何修复它

vh0rcniy  于 2023-04-07  发布在  Kotlin
关注(0)|答案(1)|浏览(195)
package com.example.codingisfun

fun main(){
    val phone1= MobilePhone("Android","Samsung","S30")
    val phone2= MobilePhone("IOS","Apple","Iphone 14")
}

class MobilePhone(osName: String, brand: String, model: String){
    private var battery= 30
    init {
        println("The phone $model from $brand uses $osName as its Operating System")
        println(chargeBattery(30))
        println(battery)
    }
    private fun chargeBattery(charged:Int){
        println("before charge:$battery,charged: $charged and now: ${battery+charged}")
        battery += charged
    }
}

当我运行它时,它会打印:
手机S30从三星使用Android作为其操作系统之前收费:30,收费:30、现在:60Kotlin.Unit 60苹果公司的iPhone 14使用IOS作为其操作系统之前充电:30,充电:30、现在:Kotlin60号60单元
chargeBattery被分配到30,然后我删除了它,并在init上使用它仍然相同,我如何修复它?

erhoui1w

erhoui1w1#

方法“chargeBattery”没有定义返回类型,在Kotlin中,默认情况下,每个没有定义返回类型的函数都会返回Unit类型。将Unit类型添加到方法签名是可选的,但基本上你也可以将方法定义为:

fun chargeBattery(charged: Int): Unit { ... }

因此,当你调用“println(chargeBattery(30))"时,你实际上是在打印函数的返回类型,打印“before charge:$ba...”字符串是执行函数的副作用。
如果你只想使用“println”来打印你的字符串,你应该让“chargeBattery”方法返回你的字符串如下:

fun chargeBattery(charged: Int): String {
   val line = "before charge:$battery,charged: $charged and now: ${battery+charged}"
   battery += charged
   return line
}

然后通过调用“println(chargeBattery(30)",只会打印该行。

相关问题