Добавление выхода в не приостанавливающую функцию - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь создать прерываемую версию 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 приостанавливающей функцией, но я хотел бы вызвать ее из подпрограммы (несколько уровней вверх) и сможет прервать / отменить его.Как бы я сделал это возможным?Есть ли способ сделать это без такой блокировки или создания новой сопрограммы для каждого символа?

...