pakoito
04/20/2020, 12:04 PMMarc Knaup
04/20/2020, 12:31 PMMarc Knaup
04/20/2020, 12:34 PM() -> Unit
for cancelation is thatâs quite unsafe and non-descriptive, even with aliases.pakoito
04/20/2020, 12:56 PMinterface DisposeJob {
fun cancel(): Unit
}
fun CoroutineScope.launchTask(job = Job(), f: suspend fun () -> Unit): DisposeJob {
launch(job) { f() }
return object: DisposeJob {
override fun cancel() =
job.cancel()
}
}
sure! an interface can replace a typealias!pakoito
04/20/2020, 12:59 PMinterface Task {
fun CoroutineScope.start(f: suspend fun () -> Unit): DisposeJob
companion object {
operator fun invoke(makeJob: () -> Job = { Job() }): Task =
object: Task {
override fun CoroutineScope.start(...) = launchTask(makeJob(), ...)
}
}
}
pakoito
04/20/2020, 12:59 PMMarc Knaup
04/20/2020, 1:23 PM.start
ed multiple times đ
How is that better than val task = MyTask.launchIn(scope)
?pakoito
04/20/2020, 1:26 PMpakoito
04/20/2020, 1:26 PMMarc Knaup
04/20/2020, 1:26 PMpakoito
04/20/2020, 1:26 PMpakoito
04/20/2020, 1:28 PMMarc Knaup
04/20/2020, 1:28 PMMarc Knaup
04/20/2020, 1:29 PMpakoito
04/20/2020, 1:29 PMMarc Knaup
04/20/2020, 1:30 PMMyTask
is a concrete typepakoito
04/20/2020, 1:30 PMpakoito
04/20/2020, 1:30 PMstart
then?pakoito
04/20/2020, 1:30 PMMarc Knaup
04/20/2020, 1:31 PMMarc Knaup
04/20/2020, 1:31 PMval task = MyTask.launchIn(scope)
It launches & starts. Hence the init
pakoito
04/20/2020, 1:31 PMpakoito
04/20/2020, 1:31 PMMarc Knaup
04/20/2020, 1:31 PMpakoito
04/20/2020, 1:31 PMpakoito
04/20/2020, 1:32 PMMarc Knaup
04/20/2020, 1:33 PMMarc Knaup
04/20/2020, 1:33 PMpakoito
04/20/2020, 1:33 PMpakoito
04/20/2020, 1:33 PMpakoito
04/20/2020, 1:34 PMMarc Knaup
04/20/2020, 1:34 PMMarc Knaup
04/20/2020, 1:59 PMEyeCon
04/20/2020, 8:57 PMactor
concept? Maybe you can implement an Actor.Marc Knaup
04/21/2020, 8:35 AMEyeCon
04/21/2020, 8:50 AMMarc Knaup
04/21/2020, 8:51 AM