https://kotlinlang.org logo
Title
i

ikt

06/27/2018, 9:26 AM
The full code is:
sealed class Async_load_state<WaitT, ErrorT, DoneT> () {
    class Wait<WaitT, ErrorT, DoneT>(val wait: WaitT): Async_load_state<WaitT, ErrorT, DoneT>() {}
    class Error<WaitT, ErrorT, DoneT>(val error: ErrorT): Async_load_state<WaitT, ErrorT, DoneT>() {}
    class Done<WaitT, ErrorT, DoneT>(val done: DoneT): Async_load_state<WaitT, ErrorT, DoneT>() {}

}

class Async_load<WaitT, ErrorT, DoneT> (
        val w: WaitT,
        f: Async_load<WaitT, ErrorT, DoneT>.(WaitT) -> Unit) {

    var state = Async_load_state.Wait<WaitT, ErrorT, DoneT>(w)
    init { f(w) }

    fun is_done(): Boolean {
        return when(state) {
            is Async_load_state.Error<*, *, *> -> true
            is Async_load_state.Done<*, *, *> -> true
            else -> false
        }
    }
}
r

rook

06/27/2018, 3:35 PM
Why wouldn’t you just
sealed class AsyncLoadState() {
  class Wait(val wait: WaitT) : AsyncLoadState()
  class Error(val error: ErrorT) : AsyncLoadState()
  class Done(val done: DoneT) : AsyncLoadState()
}