CompletableDeferred<URL?>) : Message() data class MoveToHead(val url: URL) : Message() } @OptIn(ObsoleteCoroutinesApi::class) fun CoroutineScope.urlQueueActor(urlList: List<URL>) = actor<Message> { val urlList = urlList.toMutableList() for (msg in channel) { when (msg) { is Message.Poll -> msg.result.complete(urlList.removeFirstOrNull()) is Message.MoveToHead -> { if (urlList.remove(msg.url)) { urlList.add(0, msg.url) } } } } }
CompletableDeferred<URL?>) : Message() data class MoveToHead(val url: URL) : Message() } @OptIn(ObsoleteCoroutinesApi::class) fun CoroutineScope.urlQueueActor(urlList: List<URL>) = actor<Message> { val urlList = urlList.toMutableList() for (msg in channel) { when (msg) { is Message.Poll -> msg.result.complete(urlList.removeFirstOrNull()) is Message.MoveToHead -> { if (urlList.remove(msg.url)) { urlList.add(0, msg.url) } } } } } actorͰड͚औΔϝοηʔδΛఆٛ
CompletableDeferred<URL?>) : Message() data class MoveToHead(val url: URL) : Message() } @OptIn(ObsoleteCoroutinesApi::class) fun CoroutineScope.urlQueueActor(urlList: List<URL>) = actor<Message> { val urlList = urlList.toMutableList() for (msg in channel) { when (msg) { is Message.Poll -> msg.result.complete(urlList.removeFirstOrNull()) is Message.MoveToHead -> { if (urlList.remove(msg.url)) { urlList.add(0, msg.url) } } } } } ϝοηʔδΛड৴ͯ͠ॲཧ ྻͰॲཧ͞ΕΔͷͰεϨουηʔϑ