[英]What is the best way to break execution / return to caller of anonymous functions (Kotlin)?
我想使用return
語句作為中斷函數執行的一種方式,例如:
fun divide(i1: Int, i2: Int) {
if (i2 == 0) return
print(i1 / i2)
}
我正在使用的函數如下所示:
val messageCreateEvent: suspend MessageCreateEvent.() -> Unit = {
run work@ {
val submissionID = URLReviewer.getSubmissionID(message.content) ?: return@work
// some code
}
}
(我知道,僅使用 if 語句就可以實現相同的功能。)
目前,我正在指定要返回的標簽@work
。
有沒有更好的方法返回函數調用者/中斷執行?
提前致謝!
您的代碼可以更簡單地編寫:
suspend fun messageCreateEvent(event: MessageCreateEvent) = with(event) {
val submissionID = URLReviewer.getSubmissionID(message.content) ?: return
// some code
}
如果您需要將其作為參數傳遞給某物,您可以使用::
獲取對任何函數的引用。
僅供參考,您還可以通過命名傳遞給的函數來從內聯 lambda 返回:
val messageCreateEvent: suspend MessageCreateEvent.() -> Unit = {
run {
val submissionID = URLReviewer.getSubmissionID(message.content) ?: return@run
// some code
}
}
不是一個完美的解決方案,但找到了我的問題的答案:
val messageCreateEvent: suspend MessageCreateEvent.() -> Unit = work@ {
val submissionID = URLReviewer.getSubmissionID(message.content) ?: return@work
// some code
}
您可以簡單地標記匿名函數的整個塊。 就像我以前使用的那樣,您不需要運行塊。
這個解決方案雖然不完美,但會為我做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.