В библиотеке сопрограмм Kotlin есть понятие actor
:
fun CoroutineScope.counterActor() = actor<CounterMsg> {
var counter = 0 // actor state
for (msg in channel) { // iterate over incoming messages
when (msg) {
is IncCounter -> counter++
is GetCounter -> msg.response.complete(counter)
}
}
}
В документации сказано, что
Простой актер может быть записан как функция, ноактер со сложным состоянием лучше подходит для класса.
Что может быть хорошим примером актера, определенного как класс в Котлине?