Size: a a a

2019 January 28

Ⓢⓔⓡⓖ in Kotlin Moscow
И при создании sql-запроса в БД copy() не нужна, как и иммутабельность
источник

AN

Alexander Nozik in Kotlin Moscow
Ⓢⓔⓡⓖ
Для функции copy() нужны структуры, чтобы хранить и передавать изменённые поля. Вопрос в том, как эти структуры генерить автоматически (ну не вручную же их писать?)
Не совсем понял. Нужно получить диф между двумя дата объектами?
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
Нет. Представь что есть клиент, который говорит серверу: в объекта X измени поле "street" на значение "ул. Ломоносова", поле "дом" на значение "1А".
источник

AN

Alexander Nozik in Kotlin Moscow
И чего с этим сделать надо?
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
Под передачу данных между клиентом и сервером нужны типизированные структуры данных. (Чтобы не использовать обычный Map<String,Object>).
источник

AN

Alexander Nozik in Kotlin Moscow
Ну я и говорю. Диф нужен ка отдельный тип
источник

AN

Alexander Nozik in Kotlin Moscow
Я думаю, что без мапы не обойтись. В DataForge такие штуки передаются частичным деревом, которое потом накладывается, но дерево не является статически типизирвоанным.
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
Нужен аналог Partial<T> из TypeScript.
источник

AN

Alexander Nozik in Kotlin Moscow
Я делал обретку для Partial для конверсии TS2KT (так я в тайп-скрипте мало что понимаю), но там использовались функциональные билдеры, для передачи данных они не годятся.
источник

AN

Alexander Nozik in Kotlin Moscow
Просто Partial вообще говоря нарушает статическую типизацию. Он говорит, что может быть сможешь собрать из него нормальный объект, а может и не сможешь. На этапе компиляции никак нельзя это гарантирвоать.
источник

AN

Alexander Nozik in Kotlin Moscow
источник

AN

Alexander Nozik in Kotlin Moscow
Но это не решает данную задачу
источник

AL

Alexander Larin in Kotlin Moscow
есть destructuring у дата классов, но чтобы с этого был толк, надо с клиента передавать информацию какие именно по порядку поля были изменены. тогда можно общий трейт для разных дата классов написать. но это так себе костыль...
источник

AN

Alexander Nozik in Kotlin Moscow
Alexander Larin
есть destructuring у дата классов, но чтобы с этого был толк, надо с клиента передавать информацию какие именно по порядку поля были изменены. тогда можно общий трейт для разных дата классов написать. но это так себе костыль...
Деструктор декларации в рантайме использовать не получится. Они по имени, а не по номеру.
источник

AL

Alexander Larin in Kotlin Moscow
я про функции componentN - они то как раз порядковые же
источник

AN

Alexander Nozik in Kotlin Moscow
Alexander Larin
я про функции componentN - они то как раз порядковые же
Они порядковые, но в рантайме определить функцию по номеру можно только через махровые рефлексии.
источник

AN

Alexander Nozik in Kotlin Moscow
С точки зрения компилятора это строки.
источник

AL

Alexander Larin in Kotlin Moscow
можно написать when на 22 элемента)))
источник

AL

Alexander Larin in Kotlin Moscow
но все равно нужно чтобы клиент был под это заточен - передал с каким номером поле поменялось.
источник

AN

Alexander Nozik in Kotlin Moscow
Alexander Larin
можно написать when на 22 элемента)))
Ну можно и об стену убиться. Вообще проще мапу
источник