【问题标题】:Kotlin: Unresolved referenceKotlin:未解决的参考
【发布时间】:2018-10-25 21:56:25
【问题描述】:

Kotlin:未解决的参考:totalFee

我只是在做这个小虚拟程序来练习,但它说totalFee 在尝试将值打印到屏幕时无法解析。我已经看了一段时间了,不知道为什么。 daysRented 是先前在程序中声明的 int。

if (daysRented <= 10){
    if(insPolicy == true){
       val totalFee = (shortTermRate * daysRented) + (insRate * daysRented)
    }
    else{
        val totalFee = shortTermRate * daysRented
    }
}
else{
    if(insPolicy == true){
        val totalFee = (longTermRate * daysRented) + (insRate * daysRented)
    }
    else{
        val totalFee = longTermRate * daysRented
    }
}
println("Rental fee: $totalFee")

【问题讨论】:

    标签: kotlin


    【解决方案1】:

    if 是一个表达式,所以我会把它写成

    val totalFee = if (daysRented <= 10){
        if(insPolicy == true){ // can just be if (insPolicy)
            (shortTermRate * daysRented) + (insRate * daysRented)
        }
        else{
            shortTermRate * daysRented
        }
    }
    else{
        if(insPolicy == true){
            (longTermRate * daysRented) + (insRate * daysRented)
        }
        else{
            longTermRate * daysRented
        }
    }
    

    确实应该改进到

    val termRate = if (daysRented <= 10) shortTermRate else longTermRate 
    val totalFee = 
        if (insPolicy) {
            (termRate * daysRented) + (insRate * daysRented)
        } 
        else {
            termRate * daysRented
        }
    

    甚至

    val totalFee = termRate * daysRented + 
        (if (insPolicy) insRate * daysRented else 0)
    

    【讨论】:

    【解决方案2】:

    使用此代码。

    val totalFee: Int
    if (daysRented <= 10){
        if(insPolicy){
           totalFee = (shortTermRate * daysRented) + (insRate * daysRented)
        }
        else{
            totalFee = shortTermRate * daysRented
        }
    }
    else{
        if(insPolicy){
            totalFee = (longTermRate * daysRented) + (insRate * daysRented)
        }
        else{
            totalFee = longTermRate * daysRented
        }
    }
    println("Rental fee: $totalFee")
    

    【讨论】:

    • 我不会在这种情况下建议这种风格。仅当存在多个变量或分配不是最后的操作时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 2018-10-16
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多