Есть ли способ в Kotlin выпрыгнуть из функции из другой функции? - PullRequest
0 голосов
/ 05 февраля 2019

Есть ли в котлине какой-либо способ с использованием меток или какой-либо функции, чтобы мы могли выпрыгнуть из основной функции из вызывающей функции.Что я хочу, так это когда я возвращаюсь из функции jumperFunction, я хочу выпрыгнуть из обеих функций.

fun mainFunction(){
// some code and calling this function
jumperFunction()
}

fun jumperFunction{
// some code
return@mainFunction
}

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Не уверен, что я понял ваш вариант использования, но вы можете получить нелокальные возвраты со встроенными лямбдами .

Пример:

fun main() {
    baz {
        println("Inside lambda")
        return
    }
}

inline fun baz(block: () -> Unit) {
    println("[Baz] Before block")
    block()
    println("[Baz] After block")
}

Будет напечатано:

[Baz] Before block

Inside lambda

Обратите внимание, что он пропускает [Baz] After block

0 голосов
/ 05 февраля 2019

Пусть jumperFunction() вернет логическое значение и используйте результат:

fun mainFunction() {
    //...
    if (!jumperFunction()) return
    //...
}

//returns false if the calling function should return
fun jumperFunction(): Boolean {
    //...
}
...