Size: a a a

Kotlin Community

2020 August 11

AH

Ayrat Hudaygulov in Kotlin Community
Andrew Mikhaylov
Параметры могут между собой иметь связь, невыразимую даже в контрактах. Бывает нечастно, иногда это само по себе code smell, но в 100% случаев избежать этого невозможно.
можно так

было
fun foo(arg1: Foo?, arg2: Bar?): …
где arg1 и arg2 имеют какую-то связь (например только один из них может быть null)

стало
sealed FooArgs
data class Arg1NotNull(fooNotNull: Foo): FooArgs
data class Arg2NotNull(barNotNull: Bar): FooArgs
object BothAreNull: fooArgs

fun foo(fooArgs: FooArgs) =
 when(fooArgs) {
   is Arg1NotNull ->
   is Arg2NotNull ->
   is BothAreNull ->
 }
источник

AH

Ayrat Hudaygulov in Kotlin Community
с помощью АДТ можно выразить
источник

AH

Ayrat Hudaygulov in Kotlin Community
в котлине правда немного вербозно =(
источник

AM

Andrew Mikhaylov in Kotlin Community
Ayrat Hudaygulov
можно так

было
fun foo(arg1: Foo?, arg2: Bar?): …
где arg1 и arg2 имеют какую-то связь (например только один из них может быть null)

стало
sealed FooArgs
data class Arg1NotNull(fooNotNull: Foo): FooArgs
data class Arg2NotNull(barNotNull: Bar): FooArgs
object BothAreNull: fooArgs

fun foo(fooArgs: FooArgs) =
 when(fooArgs) {
   is Arg1NotNull ->
   is Arg2NotNull ->
   is BothAreNull ->
 }
Ну потому я и говорю, что это часто code smell, признак того, что можно написать иначе так, чтобы система типов помогала избавиться от невалидных входов. Поинт про 100% случаев всё ещё актуален.
источник

OY

Oleg Yukhnevich in Kotlin Community
Ivan Sablin
есть два json, в одном поле называется a, в другом b. Как используя одну модель и два разных апишных метода, заставить все это нормально сериализоваться?
вот есть PR: https://github.com/Kotlin/kotlinx.serialization/pull/597
можно пингануть, узнать будет ли к релизу, а пока только через json transformation
источник

VT

Vsevolod Tolstopyato... in Kotlin Community
к 1.0.0-RC не будет, но это следующая приоритетная фича в сериализации
источник

A

Aleksandr in Kotlin Community
В Serializable классе есть поле типа Map<CustomType, String>. Идея ругается "Serializer has not been found for type 'CustomType'. To use context serializer as fallback, explicitly annotate type or property with @ContextualSerialization". Как это разрешить если CustomType из сторонней библиотеки?
источник

LS

Leonard Startsev in Kotlin Community
Написать к нему сериалайзер и подвесить с помощью Map<@Serializable(MySerializer::class) CustomType, String>
источник

A

Aleksandr in Kotlin Community
Leonard Startsev
Написать к нему сериалайзер и подвесить с помощью Map<@Serializable(MySerializer::class) CustomType, String>
Вот оно что, а я к самому полю пытался приписать. Спасибо большое.
источник

BP

Bogdan Panchenko in Kotlin Community
Leonard Startsev
Написать к нему сериалайзер и подвесить с помощью Map<@Serializable(MySerializer::class) CustomType, String>
О круто
источник

A

Alexander in Kotlin Community
Ребят, привет . Можете посоветовать литературу по языку, по изложению похожую на Шилдта ?
источник

V

Vladimir in Kotlin Community
Alexander
Ребят, привет . Можете посоветовать литературу по языку, по изложению похожую на Шилдта ?
Kotlin in action - крутая книга, но на Шилдта не особо похожа, куда более емкая
источник

A

Alexander in Kotlin Community
Vladimir
Kotlin in action - крутая книга, но на Шилдта не особо похожа, куда более емкая
Спасибо большое!
источник
2020 August 12

RI

Ruslan Ibragimov in Kotlin Community
17 августа что-то будет 😉 (но это не точно)
источник

1

1N54N3 in Kotlin Community
Получается этой доки достаточно прочитать чтобы вкатиться на 50к наносек работу?
источник

A

Alex in Kotlin Community
1N54N3
Получается этой доки достаточно прочитать чтобы вкатиться на 50к наносек работу?
если к этому добавить пару коммерческих приложений в playmarket то практически да))
источник

1

1N54N3 in Kotlin Community
Alex
если к этому добавить пару коммерческих приложений в playmarket то практически да))
То есть котлин нужен чтобы на нем бесполезные мобильные приложения делать?
источник

A

Alex in Kotlin Community
1N54N3
То есть котлин нужен чтобы на нем бесполезные мобильные приложения делать?
как я понимаю
Котлин для мобильной разработки очень хорошо подходит, но и бэкэнд на нём вроде можно делать (насколько это логично с учётом альтернатив, это уже другой вопрос)
источник

1

1N54N3 in Kotlin Community
Для бекенда просто всегда есть пыха
источник

AE

Alexandr Emelyanov in Kotlin Community
1N54N3
Для бекенда просто всегда есть пыха
Пахнет залетным набрасывателем
источник