Size: a a a

Kotlin Community

2020 September 14

VP

Vladimir Petrakovich in Kotlin Community
Но можно делать внутри
val frame = ... ?: break
источник

VP

Vladimir Petrakovich in Kotlin Community
саша сок #KotlinGang
ну или не объявлением, а просто

var frame: Frame
while((frame = ...) != null)
Так тоже нельзя 🙂
источник

PE

Pavel Erokhin in Kotlin Community
with (val ...) {
    while ()
}
источник

VP

Vladimir Petrakovich in Kotlin Community
саша сок #KotlinGang
ну или не объявлением, а просто

var frame: Frame
while((frame = ...) != null)
Можно ещё так:
generateSequence { videoGrabber.grabFrame() }.forEach { frame ->
   ...
}
источник

с#

саша сок #KotlinGang... in Kotlin Community
саша сок #KotlinGang
Хм, есть котлинвей для такого ?
ну это в любом случае не котлинвей имхо, я порекомендовал сделать функцию-расширение
источник

с#

саша сок #KotlinGang... in Kotlin Community
fun VideoGrabber.grabFrames(handler: (Frame) -> Unit) {
   lateinit var frame: Frame
   while(grabFrame()?.also { frame = it } != null) handler(frame)
}


fun main() = videoGrabber.grabFrames {

}
источник

с#

саша сок #KotlinGang... in Kotlin Community
я что-то такое придумал
источник

PE

Pavel Erokhin in Kotlin Community
лейтинит в функции?
источник

с#

саша сок #KotlinGang... in Kotlin Community
Pavel Erokhin
лейтинит в функции?
я на плейграунде проверил, работает, там оно всегда инициализируется, но без лейтинита будет еррор
источник

PE

Pavel Erokhin in Kotlin Community
не знал что лейтинит можно в функциях
источник

KD

Konstantin Dovnar in Kotlin Community
саша сок #KotlinGang
fun VideoGrabber.grabFrames(handler: (Frame) -> Unit) {
   lateinit var frame: Frame
   while(grabFrame()?.also { frame = it } != null) handler(frame)
}


fun main() = videoGrabber.grabFrames {

}
Я правильно понял: это не котлин-вей, поэтому я просто заверну этот не котлин-вей в функцию?
источник

с#

саша сок #KotlinGang... in Kotlin Community
Konstantin Dovnar
Я правильно понял: это не котлин-вей, поэтому я просто заверну этот не котлин-вей в функцию?
да, будет лямбда, перебирающая кадры, а не while
источник

KD

Konstantin Dovnar in Kotlin Community
саша сок #KotlinGang
да, будет лямбда, перебирающая кадры, а не while
Внутри лямбды всё равно этот вайл ¯\_(ツ)_/¯
источник

с#

саша сок #KotlinGang... in Kotlin Community
да, но он не виден человеку, читающему код
источник

с#

саша сок #KotlinGang... in Kotlin Community
так понятнее
источник

PE

Pavel Erokhin in Kotlin Community
саша сок #KotlinGang
fun VideoGrabber.grabFrames(handler: (Frame) -> Unit) {
   lateinit var frame: Frame
   while(grabFrame()?.also { frame = it } != null) handler(frame)
}


fun main() = videoGrabber.grabFrames {

}
если grabFrame вернет null то будет NPE
я бы так не делал
источник

с#

саша сок #KotlinGang... in Kotlin Community
Pavel Erokhin
если grabFrame вернет null то будет NPE
я бы так не делал
там ?.
источник

с#

саша сок #KotlinGang... in Kotlin Community
не будет npe, цикл завершится
источник

PE

Pavel Erokhin in Kotlin Community
ты в хандлер потом передаешь не инициализированную переменную

если будет null
источник

с#

саша сок #KotlinGang... in Kotlin Community
Pavel Erokhin
ты в хандлер потом передаешь не инициализированную переменную

если будет null
источник