错误:类型不匹配:推断类型是字符串?但布尔值是预期的
Posted
技术标签:
【中文标题】错误:类型不匹配:推断类型是字符串?但布尔值是预期的【英文标题】:error: type mismatch: inferred type is String? but Boolean was expected 【发布时间】:2021-08-01 17:36:06 【问题描述】:我正在尝试传递一个字符串类型的参数?到一个需要布尔类型的函数,但我不确定如何使它工作,因为如果字符串?为空,应为假,否则为真。
这是代码:
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是一个字符串?我需要一个布尔值。如何以有效的方式传递参数?
fun onSuccess(finalPrice:Int):String
val finalPrice = getTime(articleType = article.articleType,
totalTime = article.totalTime.toInt(), hasCard = article.articleCard)
return "Price is $finalPrice."
【问题讨论】:
“我怎样才能以一种有效的方式传递参数?” - 这取决于你希望它如何工作?如果你有卡,hasCard
参数应该为 true,如果没有,则为 false,但如何确定取决于你的逻辑。也许articleCard
为空意味着您没有卡?如果是这样,您将通过 [.].articleCard != null
等。
【参考方案1】:
您需要将String?
转换为Boolean
。如果您需要的是:
那么最简单的就是使用isNullOrEmpty()
:
hasCard = !article.articleCard.isNullOrEmpty()
【讨论】:
以上是关于错误:类型不匹配:推断类型是字符串?但布尔值是预期的的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin:类型不匹配:推断类型是 Intent?但意图是预期的
Kotlin 类型不匹配:推断类型是 View!但 TextView 是预期的