Size: a a a

Kotlin Community

2020 August 24

AN

Alexander Nozik in Kotlin Community
саша сок #KotlinGang
ну так условный код

val name: String? = ""

name?.let {
   println("Name $name")
} ?: println("Name invalid")


чем плох ?
А какой тип выражения?
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Nozik
А какой тип выражения?
тип выражения ?
источник

AN

Alexander Nozik in Kotlin Community
саша сок #KotlinGang
тип выражения ?
Ну это же выражение, какой у него тип?
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Nozik
Ну это же выражение, какой у него тип?
а, ну Unit, если про это речь
источник

с#

саша сок #KotlinGang... in Kotlin Community
потому что 2 принта, но а так можно
... ?: let {
   ...
}
источник

с#

саша сок #KotlinGang... in Kotlin Community
не знаю, мб if нужен, но мне понятнее safe-call
источник

AN

Alexander Nozik in Kotlin Community
саша сок #KotlinGang
не знаю, мб if нужен, но мне понятнее safe-call
Мы про читаемость говорили. И это один кол. А если там вложенное условие? А если надо промежуточную переменную седать. let - очень полезная штука, но ее нельзя пихать везде всегда
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Nozik
Мы про читаемость говорили. И это один кол. А если там вложенное условие? А если надо промежуточную переменную седать. let - очень полезная штука, но ее нельзя пихать везде всегда
вложенное условие уже обсудили - выглядит ужасно
источник

BP

Bogdan Panchenko in Kotlin Community
саша сок #KotlinGang
хм, а можно уточнить что в ифах не так бывает ?
В плане смаркастов ? Да нет там все одинаково
источник
2020 August 25

EP

Eugene P. in Kotlin Community
Кто-нибудь может "потыкать меня носом" и сказать, почему такой простой пример ничего не печатает?
https://pl.kotl.in/v8-i-ckFA
runBlocking<Unit> {
       val queue = BroadcastChannel<Boolean>(Channel.BUFFERED)
       launch {
           queue.consumeEach { println("receive $it") }
       }
       queue.send(true)
   }
источник

AN

Alexander Nozik in Kotlin Community
Eugene P.
Кто-нибудь может "потыкать меня носом" и сказать, почему такой простой пример ничего не печатает?
https://pl.kotl.in/v8-i-ckFA
runBlocking<Unit> {
       val queue = BroadcastChannel<Boolean>(Channel.BUFFERED)
       launch {
           queue.consumeEach { println("receive $it") }
       }
       queue.send(true)
   }
Ну как минимум, если это broadcastChannel, то на на него надо подписку открыть. Тут у вас ложен быть обычный канал, судя по примеру
источник

AN

Alexander Nozik in Kotlin Community
Ну и у вас нет останова
источник

AN

Alexander Nozik in Kotlin Community
Eugene P.
Кто-нибудь может "потыкать меня носом" и сказать, почему такой простой пример ничего не печатает?
https://pl.kotl.in/v8-i-ckFA
runBlocking<Unit> {
       val queue = BroadcastChannel<Boolean>(Channel.BUFFERED)
       launch {
           queue.consumeEach { println("receive $it") }
       }
       queue.send(true)
   }
источник

EP

Eugene P. in Kotlin Community
А если остановка не нужна сейчас?
источник

AN

Alexander Nozik in Kotlin Community
Eugene P.
А если остановка не нужна сейчас?
Тогда оно не завершится
источник

EP

Eugene P. in Kotlin Community
Alexander Nozik
Тогда оно не завершится
Ну оно ничего и не получает, если нет вызова close(). Это by-design так?
источник

AN

Alexander Nozik in Kotlin Community
Eugene P.
Ну оно ничего и не получает, если нет вызова close(). Это by-design так?
Там все правильно работает. Смотрите тут: https://pl.kotl.in/wsnZBXTg1. Просто Play не любит бесконечные циклы
источник

EP

Eugene P. in Kotlin Community
А, понял, вы поменяли BroadcastChannel на Channel и все заработало. А есть где почитать как правильно использовать BroadcastChannel, или его лучше не использовать?
источник

AO

Alexey Otts in Kotlin Community
Alexander Nozik
Ну как минимум, если это broadcastChannel, то на на него надо подписку открыть. Тут у вас ложен быть обычный канал, судя по примеру
Подписка открывается внутри consume
источник

AO

Alexey Otts in Kotlin Community
Eugene P.
А, понял, вы поменяли BroadcastChannel на Channel и все заработало. А есть где почитать как правильно использовать BroadcastChannel, или его лучше не использовать?
Можно и на бродкасте, просто у вас код программы завершается раньше чем канал оповещает о новом элементе, в примере Александра всё ок, потому что там стоит delay
источник