【发布时间】:2021-08-02 15:05:07
【问题描述】:
我试图在函数内部返回一个函数(返回一个字符串),但是,因为我没有明确说明(我不知道如何让它知道它会返回一个函数),结果我得到了 kotlin.Unit。
这是函数:
fun takeOutArticle(code:String) {
fun onSuccess(finalPrice: Int): String {
return "Your price is $finalFee."
}
fun onError(): String {
return "Error."
}
val articlesCode = house.articles.find{ it.code == code }
if (articlesCode != null) {
val finalPrice = calculatePrice(
articleType = articlesCode.articleCode,
finalTime = articlesCode.finalTime.toInt(),
hasCard = !articlesCode.Card.isNullOrEmpty())
onSuccess(finalPrice)
} else {
onError()
}
所以当我调用该函数时,无论它是否成功,它都会返回单位,但我需要它来返回 onSuccess 或 onError 内部的字符串。我怎样才能做到这一点?谢谢。
【问题讨论】:
-
你是要返回一个函数,还是内部函数产生的值?
-
@amanin 我基本上是在尝试返回内部函数生成的字符串,但该函数需要存在(它是任务所必需的)。
-
它返回
Unit,因为这是块函数的默认值(主体在{ }中)并且您不是return值。你正在调用你的函数并得到一个String,但你没有对它们做任何事情。您需要在这些函数调用之前放置return(然后它会抱怨,因为您需要添加String作为返回类型 - 默认情况下它期望Unit记住,即不返回任何内容)
标签: kotlin