Котлин.Пустой возврат для функции без возвращаемого значения - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть следующая функция.

    private val onConnect = Emitter.Listener {
    if(fromReconnect) {
        return
    }
    Log.d("Socket", "Socket Connected")
    val hndlr = Handler(Looper.getMainLooper())
    hndlr.post{ Toast.makeText(applicationContext, "Socket Connected", Toast.LENGTH_SHORT).show() }
    if (isTryLogin){
        reLogin()
    }
}

Я пытаюсь вернуться из функции, если установлен флаг fromReconnect .Но Android Studio выдает возврат не разрешен здесь ошибка.Но когда я изменяю return на return @ Listener , все работает нормально. IDE намекает на то, что это анонимная функция .Зачем нам возвращать @ Listener это вместо просто return ?

1 Ответ

0 голосов
/ 21 сентября 2018

Kotlin допускает нелокальный возврат только внутри встроенных функций.Если ваша функция не помечена как встроенная, или лямбда-параметр помечен noinline или crossinline , то вы не можете использовать оператор return, только возврат с меткой.Из-за нелокального возврата - возвращается из функции вызывающего, а не из лямбды точно.

Дополнительную информацию можно найти в документации.https://kotlinlang.org/docs/reference/returns.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...