Я довольно новичок в Kotlin, и я хотел бы посмотреть, может ли использование функций высокого порядка помочь в моем случае.
Мой вариант использования заключается в том, что мне нужно вызывать методы производный класс IInterface для отправки событий одному или нескольким компонентам. И я хотел бы сделать этот шаблон c, и я хочу проверить, может ли функция высокого порядка помочь. Пример кода поможет понять (ну, я на это надеюсь!).
private val eventListeners = mutableListOf<IEventInterface>() // List filled somewhere else!
private fun sendConnectionEvent(dummyString: String) {
val deadListeners = mutableListOf<IEventInterface>()
eventListeners.forEach {
try {
it.onConnectionEvent(dummyString)
} catch (e: DeadObjectException) {
Log.d(TAG, "Removing listener - Exception ${e.message}")
deadListeners.add(it)
}
}
deadListeners.forEach { it ->
eventListeners.remove(it)
}
}
private fun sendWonderfulEvent(dummyString: String, dummyInt: Int) {
val deadListeners = mutableListOf<IEventInterface>()
eventListeners.forEach {
try {
it.onWonderfulEvent(dummyString, dummyInt)
} catch (e: DeadObjectException) {
Log.d(TAG, "Removing listener - Exception ${e.message}")
deadListeners.add(it)
}
}
deadListeners.forEach { it ->
eventListeners.remove(it)
}
}
Я добавил 2 аналогичных метода (у меня будет еще много в реальном случае) и я думаю (надеюсь! ) что-то можно сделать, но я не могу заставить работать функцию высокого порядка в этом случае, потому что:
- Я хочу вызвать один и тот же метод в нескольких экземплярах. , а не «просто» базовая c функция
- Что еще хуже, методы, которые мне нужно вызвать, не имеют такого же прототипа (это было бы слишком просто!).
Надеюсь, это достаточно ясно.
Спасибо за вашу помощь!
VR