Как я могу создать функцию, которая при вызове может добавить addOnSuccessListener к ней - PullRequest
0 голосов
/ 03 июля 2019

Не уверен, как сформулировать этот вопрос. Я хотел бы создать функцию, при вызове которой я могу добавить addOnSuccessListener к ней, прежде чем перейти к следующей.

Я знаю, что когда у меня есть функция, возвращающая Task<Void>, я могу добавить к ней addOnSuccessListener, но в самой функции я не уверен, что возвращать, так как выполняемая мной операция представляет собой простой процесс сохранение ввода EditText в переменные. Не уверен, какую задачу вернуть.

Это моя функция:

fun saveInput(): Task<Void> {
    email = emailInput.text.toString()
    phone = phoneInput.text.toString()
    whatsApp = whatsAppInput.text.toString()

    return //notSureWhatToReturnHere
}

И я хочу иметь возможность сделать что-то вроде этого:

saveInput.onSuccess{
//do something
}

1 Ответ

0 голосов
/ 03 июля 2019

Как то так?

class Worker<T> {
    private var successListener: ((result: T) -> Unit)? = null

    fun onSuccess(result: T) {
        successListener?.run { this(result) }
    }

    fun addSuccessListener(listener: (result: T) -> Unit): Worker<T> {
        successListener = listener
        return this
    }
}

class MyRandomClass {
    fun doSomething(variable: String): Worker<String> {
        val worker: Worker<String> = Worker()
        val result = variable.reversed()
        worker.onSuccess(result)
        return worker
    }
}
//... in code
val randomClass = MyRandomClass()
randomClass.doSomething("Hello World")
    .addSuccessListener {
        Log.d(TAG, "Result is: $it")
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...