Цикл while вложен в синхронизированный блок в Kotlin - PullRequest
0 голосов
/ 14 ноября 2018

Почему следующее компилируется в Kotlin:

fun foo(): Boolean {
    while (true) {
        return true
    }
}

fun bar(): Boolean {
    synchronized("") {
        return foo()
    }
}

в то время как следующие не ?

fun baz(): Boolean {
    synchronized("") {
        while (true) {
            return true
        }
    }
}

И каков идиоматический способ заставить последнюю функцию компилироваться? Я могу переписать это следующим образом:

fun baz(): Boolean {
    synchronized("") {
        while (true) {
            return true
        }

        TODO("Never")
    }
}

- но это не выглядит достаточно элегантно.

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