Size: a a a

Kotlin Community

2020 May 14

VP

Vladimir Petrakovich in Kotlin Community
Дмитрий
Я вот читаю про корутины и дошел до этого примера и не понимаю, что и для чего
fun main(args: Array<String>) {
//sampleStart
   val lazySeq = sequence {
       yield(0)
       yieldAll(1..10)
   }

   lazySeq.forEach { print("$it ") }
//sampleEnd
}
А там рядом не написано, что происходит?
источник

AN

Alexander Nozik in Kotlin Community
Дмитрий
Я вот читаю про корутины и дошел до этого примера и не понимаю, что и для чего
fun main(args: Array<String>) {
//sampleStart
   val lazySeq = sequence {
       yield(0)
       yieldAll(1..10)
   }

   lazySeq.forEach { print("$it ") }
//sampleEnd
}
нет, это как раз оператор внутри SequenceScope. К корутинам он имеет довольно косвенное отношение.
источник

AN

Alexander Nozik in Kotlin Community
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexander Nozik
нет, это как раз оператор внутри SequenceScope. К корутинам он имеет довольно косвенное отношение.
Самое прямое же
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
Самое прямое же
Нет, в данном случае к корутинам косвенное отношение. Он суспенд, но это не главное его свойство.
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexander Nozik
Нет, в данном случае к корутинам косвенное отношение. Он суспенд, но это не главное его свойство.
Вы так пишите, как будто возвращаемый Sequence - это не корутина
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
Вы так пишите, как будто возвращаемый Sequence - это не корутина
Нет
источник

AN

Alexander Nozik in Kotlin Community
Он использует магию компилятора для корутин, но коуртины как таковой там нет
источник

VP

Vladimir Petrakovich in Kotlin Community
А что это такое тогда?
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
А что это такое тогда?
Синтаксический сахар для развертывания в цикл. В данном конкретном случае корутины нет.
источник

AN

Alexander Nozik in Kotlin Community
Строго синхронное последовательное выполнение
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexander Nozik
Синтаксический сахар для развертывания в цикл. В данном конкретном случае корутины нет.
Так можно про любую корутину сказать
источник

BP

Bogdan Panchenko in Kotlin Community
Дмитрий
Я вот читаю про корутины и дошел до этого примера и не понимаю, что и для чего
fun main(args: Array<String>) {
//sampleStart
   val lazySeq = sequence {
       yield(0)
       yieldAll(1..10)
   }

   lazySeq.forEach { print("$it ") }
//sampleEnd
}
Ну он просто отправляет значения в последовательность. Очень грубо: list.add
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
Так можно про любую корутину сказать
Просто конкретно случай SequenceScope - это исключение.
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexander Nozik
Строго синхронное последовательное выполнение
И это тоже относится к любым корутинам
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
И это тоже относится к любым корутинам
Попробуйте из sequence произвольную suspend функцию запустить
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexander Nozik
Попробуйте из sequence произвольную suspend функцию запустить
От того, что это нельзя сделать, оно не перестаёт быть корутиной. Это то же самое приостанавливаемое вычисление.
источник

BP

Bogdan Panchenko in Kotlin Community
Vladimir Petrakovich
От того, что это нельзя сделать, оно не перестаёт быть корутиной. Это то же самое приостанавливаемое вычисление.
Итератор тоже корунтина значит
источник

AN

Alexander Nozik in Kotlin Community
Вы корутины и suspend не путаете? Впрочем, не буду спорить о терминах. Елизаров придет, рассудит, если захочет
источник

VP

Vladimir Petrakovich in Kotlin Community
Bogdan Panchenko
Итератор тоже корунтина значит
Конкретно этот реализован на корутинах
источник