Size: a a a

Kotlin Community

2020 March 26

U

Unat in Kotlin Community
Мне нравится на датаклассы писать расширения
источник

U

Unat in Kotlin Community
Чтобы не захламлять их методами
источник

AL

Anton Lakotka in Kotlin Community
Nikita Yatskivskiy
Ребят, имеем класс, который мы сами же и написали и к нему у нас всегда есть доступ.
В каких случаях нам стоит поместить функцию внутри этого класса, а в каких - написать extension? Или в таком случае extension вообще смысла не имеет?
extension для расширения
обычные методы -- это что-то вроде must-have.
источник

NY

Nikita Yatskivskiy in Kotlin Community
Я просто заметил, что в swift - это нормальная практика.
https://cocoacasts.com/four-clever-uses-of-swift-extensions
Например, пункт про Code Separation
источник

NY

Nikita Yatskivskiy in Kotlin Community
Вполне и к котлину применим
источник

NY

Nikita Yatskivskiy in Kotlin Community
Первый пункт про Protocol Conformance выглядит прикольно)
источник

AE

Alexandr Emelyanov in Kotlin Community
стоит заметить что если у класса есть приватные поля, то экстеншн не получит к ним доступа
источник

AE

Alexandr Emelyanov in Kotlin Community
так что да, методы в приоритете
источник

NY

Nikita Yatskivskiy in Kotlin Community
Это да, это понятно
источник

NY

Nikita Yatskivskiy in Kotlin Community
Но если это обычный data class
источник

NY

Nikita Yatskivskiy in Kotlin Community
То почему нет?
источник

AE

Alexandr Emelyanov in Kotlin Community
экстеншены были бы куда более применимы, если в языке был duck typing. тогда был бы большой смысл делать именно расширения
источник

NY

Nikita Yatskivskiy in Kotlin Community
duck typing? А что это?
источник

NY

Nikita Yatskivskiy in Kotlin Community
Просто почему я data class упомянул - в статье про свифт как раз к аналогичному мешку с данными (структуре) советуют писать экстеншн
источник

U

Unat in Kotlin Community
Типизация как в питоне, звучит как бред
источник

U

Unat in Kotlin Community
Расширения на структуры - имхо лучше, чем методы у структур
источник

AE

Alexandr Emelyanov in Kotlin Community
Nikita Yatskivskiy
duck typing? А что это?
когда есть некий контракт, тот же интерфейс или набор пропертей, которые есть у таргета, но он их получил не путем наследования, а просто имеет тот же набор и к нему по факту применим тот же код
источник

U

Unat in Kotlin Community
Alexandr Emelyanov
когда есть некий контракт, тот же интерфейс или набор пропертей, которые есть у таргета, но он их получил не путем наследования, а просто имеет тот же набор и к нему по факту применим тот же код
Так ведь в котле это есть
источник

AE

Alexandr Emelyanov in Kotlin Community
Unat
Так ведь в котле это есть
нет
источник

U

Unat in Kotlin Community
Это неявного приведения нету, а расширение на явный набор интерфейсов - пожалуйста
источник