Size: a a a

Kotlin Community

2020 April 03

QH

Quantum Harmonizer in Kotlin Community
Bogdan Panchenko
Читать доки и знать что итератор подразумевает последовательность, и ленивость в нем не предусмотрена, поэтому стрим не был унаследован от итератора (сейчас не знаю не следил). Поэтому следует предположить что он не ленивый
Во-первых, итерабл и итератор — разные сущности. Итератор можно взять хоть у стрима или сиквенса.
Во-вторых, там ничего не сказано про ленивость. Итераблы можно итерировать. Всё.
В-третьих, StreamEx implements Iterable, за что Тагиру большое спасибо, задолбаешься конвертировать между пятью разными типами.
источник

BP

Bogdan Panchenko in Kotlin Community
Quantum Harmonizer
Во-первых, итерабл и итератор — разные сущности. Итератор можно взять хоть у стрима или сиквенса.
Во-вторых, там ничего не сказано про ленивость. Итераблы можно итерировать. Всё.
В-третьих, StreamEx implements Iterable, за что Тагиру большое спасибо, задолбаешься конвертировать между пятью разными типами.
У стрима можно взять сплитератор, но может в новом апи иначе
источник

АО

Алексей Овсянников in Kotlin Community
Quantum Harmonizer
Во-первых, итерабл и итератор — разные сущности. Итератор можно взять хоть у стрима или сиквенса.
Во-вторых, там ничего не сказано про ленивость. Итераблы можно итерировать. Всё.
В-третьих, StreamEx implements Iterable, за что Тагиру большое спасибо, задолбаешься конвертировать между пятью разными типами.
Итератор можно поверх чего-то написать, при желании:)
источник

BP

Bogdan Panchenko in Kotlin Community
Quantum Harmonizer
Во-первых, итерабл и итератор — разные сущности. Итератор можно взять хоть у стрима или сиквенса.
Во-вторых, там ничего не сказано про ленивость. Итераблы можно итерировать. Всё.
В-третьих, StreamEx implements Iterable, за что Тагиру большое спасибо, задолбаешься конвертировать между пятью разными типами.
Ну вот Тагир как раз и говорил про это, вчера доклад смотрел пересматривал
источник

AM

Andrew Mikhaylov in Kotlin Community
Это было хорошо щас)
источник

QH

Quantum Harmonizer in Kotlin Community
Bogdan Panchenko
У стрима можно взять сплитератор, но может в новом апи иначе
источник

QH

Quantum Harmonizer in Kotlin Community
Алексей Овсянников
Итератор можно поверх чего-то написать, при желании:)
Так и делаю, и всячески топлю за это.
источник

QH

Quantum Harmonizer in Kotlin Community
Bogdan Panchenko
Ну вот Тагир как раз и говорил про это, вчера доклад смотрел пересматривал
Можно хотя бы название доклада? Так-то Тагир очень много всего говорил.
источник

BP

Bogdan Panchenko in Kotlin Community
Мож немного спутал сейчас скину
источник

BP

Bogdan Panchenko in Kotlin Community
источник

BP

Bogdan Panchenko in Kotlin Community
Это очень старый доклад поэтому многие слова могут быть не совсем актуальны
источник

QH

Quantum Harmonizer in Kotlin Community
топ, спасибо, очень люблю такое
источник

QH

Quantum Harmonizer in Kotlin Community
Короч, Джошуа Блох на моей стороне :)
источник

AM

Alex M in Kotlin Community
Всем добрый день! Извините за глупый вопрос, но кто-нибудь может внятно объяснить роль
yield()
в этом примере из доки? Спасибо!
val job = launch {
   val child = launch {
       try {
           delay(Long.MAX_VALUE)
       } finally {
           println("Child is cancelled")
       }
   }
   yield()
   println("Cancelling child")
   child.cancel()
   child.join()
   yield()
   println("Parent is not cancelled")
}
job.join()
источник

VP

Vladimir Petrakovich in Kotlin Community
Alex M
Всем добрый день! Извините за глупый вопрос, но кто-нибудь может внятно объяснить роль
yield()
в этом примере из доки? Спасибо!
val job = launch {
   val child = launch {
       try {
           delay(Long.MAX_VALUE)
       } finally {
           println("Child is cancelled")
       }
   }
   yield()
   println("Cancelling child")
   child.cancel()
   child.join()
   yield()
   println("Parent is not cancelled")
}
job.join()
Ссылочку на доку бы
источник

AM

Alex M in Kotlin Community
Vladimir Petrakovich
Ссылочку на доку бы
источник

AN

Alexander Nozik in Kotlin Community
Alex M
Всем добрый день! Извините за глупый вопрос, но кто-нибудь может внятно объяснить роль
yield()
в этом примере из доки? Спасибо!
val job = launch {
   val child = launch {
       try {
           delay(Long.MAX_VALUE)
       } finally {
           println("Child is cancelled")
       }
   }
   yield()
   println("Cancelling child")
   child.cancel()
   child.join()
   yield()
   println("Parent is not cancelled")
}
job.join()
Проверка прерывания корутины
источник

AM

Alex M in Kotlin Community
Alexander Nozik
Проверка прерывания корутины
А почему вызов 2 раза? Кроме того, если убрать 2й yield(), то вывод в консоль такой же точно.
источник

AN

Alexander Nozik in Kotlin Community
Alex M
А почему вызов 2 раза? Кроме того, если убрать 2й yield(), то вывод в консоль такой же точно.
Не знаю, может так исторически сложилось. Навероное типа убеждаемся, что принт не выполнился по инерции, а так и должно быть
источник

AM

Alex M in Kotlin Community
Alexander Nozik
Проверка прерывания корутины
А почему первый вызов yield() до отмены дочерней корутины? Я так понимаю, он нужен, чтоб вывелось то, что в блоке finally?
источник