Возвращение из OnCompleteListener с помощью Kotlin Lambda

Это, по-видимому, связано с ошибкой. AngularUI еще не поддерживает Angular 1.4. Как только http://github.com/angular-ui/bootstrap/issues/3620 будет разрешено, это сработает.

0
задан Johnnie90 13 July 2018 в 20:06
поделиться

1 ответ

У меня нет среды Firebase, поэтому я не могу проверить свой код. Но, по грамматике Котлина, я думаю, вы можете вытащить registerList из области лямбды, например:

fun getRegisters() : MutableList<Register> {
    var registerList : MutableList<Register> = mutableListOf()
    mRegistersFirestoreRef.get()
        .addOnCompleteListener(
            OnCompleteListener { task ->
                when {
                    task.isSuccessful -> {
                        val documents = task.result
                        for (document: QueryDocumentSnapshot in documents) {
                            registerList.add(document.toObject(Register::class.java))
                        }
                    }
                    else -> {
                        Log.e("Error", task.exception)
                    }
                }
            })
    return registerList
}

или использовать with или apply для «упрощения» вызова из var something = initial(); doSth(something); return something в return with (initial()) { doSth(this); this } или return initial().apply { doSth(this) } (Однако это может быть немного вне области вопроса).

0
ответ дан Geno1024 17 August 2018 в 12:10
поделиться
  • 1
    Спасибо, но я думаю, что это не сработает, потому что мне нужно возвращение внутри слушателя. Представьте, что у вас есть OnClickListener, и функция должна возвращать список, когда пользователь нажимает кнопку, которая активирует слушателя. Если я верну его обратно, он никогда не будет доступен. – Johnnie90 17 July 2018 в 05:15
Другие вопросы по тегам:

Похожие вопросы: