错误:类型不匹配:推断的类型是字符串?但布尔值是预期的

我想传递一个字符串类型的参数?到一个需要布尔类型的函数,但我不知道如何使它工作,因为如果字符串?为空,应为假,否则为真。

这是代码:

data class House(
    var article: Article,var totalTime: Calendar){

    val totalTime: Long
        get() = (Calendar.getInstance().timeInmillis - totalTime.timeInmillis) / MIN_IN_MILISEC

    fun takeArticleout(artCode:String){

        fun onSuccess(finalPrice:Int):String{
            val finalPrice = getTime(vehicleType = article.articleType,totalTime = article.totalTime.toInt(),hasCard = article.articleCard)

            return "Price is $finalPrice."
        }
    }

    fun getTime(articleType: ArticleType,totalTime:Int,articleCard:Boolean): Int {
        var finalPrice = 20
        if (totalTime > 30) {
            finalPrice += ((totalTime - 30) / 15) * 10
        }
        return finalPrice
    }

    if(hasDiscountCard){
                val discount = (finalPrice * 15) / 100
                finalPrice = finalPrice - discount
                return finalPrice
            }

            return finalPrice

        }

data class Article(val artCode: String,var articleType: ArticleType,var totalTime: Calendar,var articleCard:String?=" "){

    val totalTime: Long
        get() = (Calendar.getInstance().timeInmillis - checkintime.timeInmillis) / 60000 //minutes in milliseconds
}

错误来自这部分,使用hasCard是因为article.articleCard是一个String?我需要一个布尔值。如何以一种有效的方式传递参数?

fun onSuccess(finalPrice:Int):String{
            val finalPrice = getTime(articleType = article.articleType,hasCard = article.articleCard)

            return "Price is $finalPrice."
        }
lluozzi 回答:错误:类型不匹配:推断的类型是字符串?但布尔值是预期的

您需要将 String? 转换为 Boolean。如果您需要的是:

  • 空 -> 假
  • "" -> 假
  • 非空字符串值 -> 真

那么最简单的就是使用isNullOrEmpty()

hasCard = !article.articleCard.isNullOrEmpty()
本文链接:https://www.f2er.com/1107.html

大家都在问