簡體   English   中英

中斷執行/返回匿名函數(Kotlin)調用者的最佳方法是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM