Я пытаюсь создать прерываемую версию CharSequence.Что-то вроде этого:
class InterruptableCharSequence(private val delegate: CharSequence) : CharSequence {
override fun get(index: Int): Char = runBlocking {
yield() // Suspend here, in case we have cancelled
delegate[index]
}
override fun subSequence(start: Int, end: Int): CharSequence {
return delegate.subSequence(start, end)
}
override fun toString(): String {
return delegate.toString()
}
}
Так как это реализует существующий интерфейс, я не могу сделать get
приостанавливающей функцией, но я хотел бы вызвать ее из подпрограммы (несколько уровней вверх) и сможет прервать / отменить его.Как бы я сделал это возможным?Есть ли способ сделать это без такой блокировки или создания новой сопрограммы для каждого символа?