Size: a a a

2020 May 25

BP

Bogdan Panchenko in KotlinLangRu
Iliya Kuznetsov
странно, идея подсвечивает ошибку а её нет и код работает
я бы зарепортил, было уже подобное
источник

А

Александр in KotlinLangRu
подскажите пожалуйста про sealed cases. в документации по ним написано что они как то типо могут контролировать наследование. я не понимаю как. понятно что они как энумы но с возможностью создавать экземпляры. Но вот как они контролируют наследование не пойму, ничего вроде не мешает писать опен и делать все тоже самое как и с другими классами. подскажите плиз в чем тут фишка
источник

NR

Nikita Rudy in KotlinLangRu
Ты можешь сделать when по типу класса
источник

NR

Nikita Rudy in KotlinLangRu
И тебе идеешка скажет мол сгенерировать остальные кейсы или else добавить?
источник

А

Александр in KotlinLangRu
спасибо. а что особенного в when? я же и в джаве мог знать все что у меня есть в моем энуме
источник

А

Александр in KotlinLangRu
sealed class чото типо кагото хэндлера для обычных классов. плиз объясните что за кейсы и в чем тут новаторство
источник

QH

Quantum Harmonizer in KotlinLangRu
Ну блин. sealed class имеет ограниченное, заранее известное множество наследников. На экземпляре можно делать внятный when. Всё
источник
2020 May 26

А

Александр in KotlinLangRu
спасибо, но пока не понимаю еще, буду думать
источник

AD

Aleksey D. in KotlinLangRu
хм, кстати, в тему sealed классов. на сколько правильно игнорировать предложения IDE конвертнуть классы без параметров в object? у меня перфекционист страдает, когда часть классов в when с is идут, а часть на инстанс проверяются.
источник

QH

Quantum Harmonizer in KotlinLangRu
Aleksey D.
хм, кстати, в тему sealed классов. на сколько правильно игнорировать предложения IDE конвертнуть классы без параметров в object? у меня перфекционист страдает, когда часть классов в when с is идут, а часть на инстанс проверяются.
Правильно.
И соглашусь в перфекционистом, никто не мешает обджект тоже проверять на инстанс.
источник

QH

Quantum Harmonizer in KotlinLangRu
Ещё можно запилить inline-функцию sealedInstance.fold() и не генерить when каждый раз
источник

А

Александр in KotlinLangRu
Quantum Harmonizer
Ну блин. sealed class имеет ограниченное, заранее известное множество наследников. На экземпляре можно делать внятный when. Всё
можно еще раз?

я могу писать сколько хочу наследников в сеал класс. могу

я могу делать наследников от наследников сеал класса.
могу.
так в чем ограничение по сравнению с обычными классами?
источник

QH

Quantum Harmonizer in KotlinLangRu
Александр
можно еще раз?

я могу писать сколько хочу наследников в сеал класс. могу

я могу делать наследников от наследников сеал класса.
могу.
так в чем ограничение по сравнению с обычными классами?
Наследовать силед можно только в том же файле, в котором он объявлен.
А экзкмпляр силеда можно исчерпывающе проверить на тип.
источник

QH

Quantum Harmonizer in KotlinLangRu
sealed class Folk {
   class Guy : Folk()
   class Gal : Folk()
}
...
fun whatever(f: Folk) = when (f) {
   is Guy -> TODO()
   is Gal -> TODO()
   // else не нужен
}
источник

А

Александр in KotlinLangRu
спасибо. но я могу отнаследоваться от Guy в другом файле а не в этом. таким образом мои экземпляры разбредутся все равно (а не будут лежать в селед)
источник

QH

Quantum Harmonizer in KotlinLangRu
Александр
спасибо. но я могу отнаследоваться от Guy в другом файле а не в этом. таким образом мои экземпляры разбредутся все равно (а не будут лежать в селед)
всё так, если ты хочешь исчерпывающе проверять подтипы Guy, его тоже придётся сделать силед
источник

А

Александр in KotlinLangRu
сейчас вроде понятно лучше, завтра попробую сделать. спасибо
источник

AD

Aleksey D. in KotlinLangRu
Quantum Harmonizer
Правильно.
И соглашусь в перфекционистом, никто не мешает обджект тоже проверять на инстанс.
шок. правда с object можно. кажется, что пару версий котлина назад было нельзя.
источник

QH

Quantum Harmonizer in KotlinLangRu
Aleksey D.
шок. правда с object можно. кажется, что пару версий котлина назад было нельзя.
да с чего бы? object — и экземпляр, и тип.
источник

AD

Aleksey D. in KotlinLangRu
Quantum Harmonizer
Ещё можно запилить inline-функцию sealedInstance.fold() и не генерить when каждый раз
а можно носом ткнуть в пример такой функции? что-то не вышло провести аналогию с встроенными функциями
источник