Size: a a a

Kotlin Community

2020 December 30

OY

Oleg Yukhnevich in Kotlin Community
Oleg Yukhnevich
вообще, тогда лучше делать receiveOrClosed() - и прокидывать ошибку, если там реально было ошибка
если использовать receive() - то даже если канал закрылся просто так (во flow закончились элементы, будет ошибка)
вообще, думаю можно заменить наружный цикл на consumeEach
https://pl.kotl.in/lAXbvCzbS
типа так - даже лучше, единственное, что здесь создаётся итератор по каналу и обрабатывается нормально закрытие канала
источник

AN

Alexander Nozik in Kotlin Community
Угу, это то, что в KMath называется AlgebraElement. И работает оно хреново. Я его оставил только как запасной вариант для ортодоксов
источник

IP

Iaroslav Postovalov in Kotlin Community
Alexander Nozik
блин, еще один. Опиши юз кейс, который не связан с маппингом листа и сериализацией.
тайпсейф фабрики объектов
источник

IP

Iaroslav Postovalov in Kotlin Community
без дублирования кода
источник

IP

Iaroslav Postovalov in Kotlin Community
юзкейс? юзкейс. редкий? редкий. приведет к суицидам среди разработчиков плагина? возможно
источник

AN

Alexander Nozik in Kotlin Community
Iaroslav Postovalov
тайпсейф фабрики объектов
Компаньон, наследующий интерфейс решает это полностью. А полностью тайп-сейф фабрику без горы имплиситов ты не сделаешь. Имплиситы по коду будут не меньше
источник

IP

Iaroslav Postovalov in Kotlin Community
Alexander Nozik
Компаньон, наследующий интерфейс решает это полностью. А полностью тайп-сейф фабрику без горы имплиситов ты не сделаешь. Имплиситы по коду будут не меньше
компаньон, наследующий интерфейс - это хорошо, но а что если мне дженерик нужно еще
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Nozik
блин, еще один. Опиши юз кейс, который не связан с маппингом листа и сериализацией.
чтобы задать интерфейс для монады
источник

IP

Iaroslav Postovalov in Kotlin Community
саша сок #KotlinGang
чтобы задать интерфейс для монады
это не юзкейс
источник

AN

Alexander Nozik in Kotlin Community
саша сок #KotlinGang
чтобы задать интерфейс для монады
Монада ради монады или что-то конкретное?
источник

IP

Iaroslav Postovalov in Kotlin Community
саша сок #KotlinGang
чтобы задать интерфейс для монады
без юзкейса для монады смысла в этом нет
источник

с#

саша сок #KotlinGang... in Kotlin Community
Iaroslav Postovalov
это не юзкейс
ну ладно тогда
источник

AN

Alexander Nozik in Kotlin Community
То, что Ярослав говорит - это имеет смысл, но я не вижу, как тут хкт нам что-то сэкономит. Если есть пример - будет интересно
источник

IP

Iaroslav Postovalov in Kotlin Community
Iaroslav Postovalov
компаньон, наследующий интерфейс - это хорошо, но а что если мне дженерик нужно еще
interface A<T>
interface FactoryOfA<_>> { fun <T> new(): A<T> }
источник

IP

Iaroslav Postovalov in Kotlin Community
источник

AN

Alexander Nozik in Kotlin Community
Iaroslav Postovalov
interface A<T>
interface FactoryOfA<_>> { fun <T> new(): A<T> }
Не понял, в каком месте это лучше компаньона -фабрики
источник

IP

Iaroslav Postovalov in Kotlin Community
Alexander Nozik
Не понял, в каком месте это лучше компаньона -фабрики
ну так как раз таки в контексте этого сниппета

class ImplOfA<T> : A<T> {
 companion object : FactoryOfA<ImplOfA<_>> { fun <T> new(): ImplOfA<T> }
}
источник

AN

Alexander Nozik in Kotlin Community
Все забывают всегда написать, как это реализовываться будет. Тебе же все равно для каждого A надо это реализовать и имплисит подтащить
источник

IP

Iaroslav Postovalov in Kotlin Community
Iaroslav Postovalov
ну так как раз таки в контексте этого сниппета

class ImplOfA<T> : A<T> {
 companion object : FactoryOfA<ImplOfA<_>> { fun <T> new(): ImplOfA<T> }
}
и при этом полиморфизм
источник

IP

Iaroslav Postovalov in Kotlin Community
Alexander Nozik
Все забывают всегда написать, как это реализовываться будет. Тебе же все равно для каждого A надо это реализовать и имплисит подтащить
нет
источник