Size: a a a

Kotlin Community

2020 April 09

AM

Andrew Mikhaylov in Kotlin Community
В более новых версиях (не помню, правда, с какой точно) будет -Xopt-in вместо Xuse-experimental
источник

NY

Nikita Yatskivskiy in Kotlin Community
Кстати, студия всегда минимум два варианта подсказывает - есть разница, какую аннотацию вешать?
источник

AM

Andrew Mikhaylov in Kotlin Community
Ну и можно ж передавать ["-Xopt-in=kotlin.OptIn", "-Xopt-in=kotlinx.coroutines.FlowPreview"], когда надо несколько опт-инов сделать
источник

AM

Andrew Mikhaylov in Kotlin Community
Nikita Yatskivskiy
Кстати, студия всегда минимум два варианта подсказывает - есть разница, какую аннотацию вешать?
Первый вариант заставит код, вызывающий помеченную функцию, так же опт-иниться, второй нет
источник

AM

Andrew Mikhaylov in Kotlin Community
Первый используется, когда экспериментальные штуки протекают в ваш API, второй — если они только под капотом используются
источник

AM

Andrew Mikhaylov in Kotlin Community
К примеру, если вы возвращаете из функции UInt — она будет помечена первым вариантом, если вы в реализации функции воспользовались UInt, но публичный API никак беззнаковые типы не использует — второй
источник

NY

Nikita Yatskivskiy in Kotlin Community
А если целиком помечаю класс @OptIn, то эти правила просто на все методы сразу распространяются?
источник

NY

Nikita Yatskivskiy in Kotlin Community
Как если бы я каждый пометил такой аннотацией?
источник

VP

Vladimir Petrakovich in Kotlin Community
Nikita Yatskivskiy
А если целиком помечаю класс @OptIn, то эти правила просто на все методы сразу распространяются?
Да, так же как и @Suppress
источник

AN

Alexander Nozik in Kotlin Community
Nikita Yatskivskiy
Гм
Окей
Увидел слово Preview и подумал, что это прям совсем-совсем не устойчивое api
Совсем неустойчивое в релиз не пускают
источник

VN

Vladislav Navrocky in Kotlin Community
Господа, кто меня просветит, я хочу сделать либу, совместимую с kotlin multiplatform, что мне для этого надо делать, достаточно убрать JVM зависимости? Или надо что-то где-то еще прописать
источник

AP

Alexey Pushkarev in Kotlin Community
Почему у дата классов в toString() попадают только поля конструктора, а не вообще все? Может кто знает почему в котлине это так сделано?
источник

VN

Vladislav Navrocky in Kotlin Community
Сейчас в мультиплатформе моя либа подключается, но классы из неё не видны
источник

VN

Vladislav Navrocky in Kotlin Community
да, там есть зависимости от JVM, понятно что надо от них избавиться
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexey Pushkarev
Почему у дата классов в toString() попадают только поля конструктора, а не вообще все? Может кто знает почему в котлине это так сделано?
Потому что у нормального дата-класса там лежит всё состояние
источник

AP

Alexey Pushkarev in Kotlin Community
Vladimir Petrakovich
Потому что у нормального дата-класса там лежит всё состояние
а у меня одно поле считается на основе других полей. При том что эти расчеты по сути не чистая функция, там используется рандом. Поэтому сразу при создании класса вычисляется это поле и оно не в конструкторе.
источник

AP

Alexey Pushkarev in Kotlin Community
и это как по мне странно, я ожидал что все поля в toString  попадут, эх
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexey Pushkarev
а у меня одно поле считается на основе других полей. При том что эти расчеты по сути не чистая функция, там используется рандом. Поэтому сразу при создании класса вычисляется это поле и оно не в конструкторе.
Значит, это лучше не делать data-классом. copy() всё равно вряд ли будет работать как надо.
источник

CC

Curious Cephalopod in Kotlin Community
Alexey Pushkarev
и это как по мне странно, я ожидал что все поля в toString  попадут, эх
Ну или можно вот так
источник

AP

Alexey Pushkarev in Kotlin Community
Curious Cephalopod
Ну или можно вот так
тогда можно будет его в конструктор передать, я так не хочу)
источник