Size: a a a

Kotlin Community

2020 December 20

PR

Pavel Rukin in Kotlin Community
можно как-то в data class при создании сразу параметр передать?
чтобы capitalName в County принимал  параметр name из DataModel
источник

AL

Alexander Levin in Kotlin Community
Pavel Rukin
можно как-то в data class при создании сразу параметр передать?
чтобы capitalName в County принимал  параметр name из DataModel
Пока не видно, как эти классы должны быть связаны (Country не зависит в теории от DataModel сейчас)

Потенциально вам могут помочь дефолтные параметры (если объект класса DataModel где-то валяется, то можно писать что-то вроде var capitalName: String? = someDataModel.name ), либо secondary constructor (передать туда DataModel явно и вызвать primary constructor, вытащив из DataModel нужные вещи)
источник

PR

Pavel Rukin in Kotlin Community
Alexander Levin
Пока не видно, как эти классы должны быть связаны (Country не зависит в теории от DataModel сейчас)

Потенциально вам могут помочь дефолтные параметры (если объект класса DataModel где-то валяется, то можно писать что-то вроде var capitalName: String? = someDataModel.name ), либо secondary constructor (передать туда DataModel явно и вызвать primary constructor, вытащив из DataModel нужные вещи)
что-то типо такого?
источник

AL

Alexander Levin in Kotlin Community
Pavel Rukin
что-то типо такого?
Если это что-то сериализуемое, то добавление в primary конструктор меняет идею, что вы получите на выходе после сериализации например.
источник

AL

Alexander Levin in Kotlin Community
Т.е. до это ваш объект country выглядел бы как:

{
 "capitalName": "Moscow",
 "name" "Russian Federation"
}


теперь у вас что-то вроде:
{
 "dataModel: { ... },
 "capitalName": "Moscow",
 "name" "Russian Federation"
}
источник

PR

Pavel Rukin in Kotlin Community
суть такова что из JSON прилетает $name  просто как строка, а  хотелось бы переопределить какой-то параметр из листа который находится выше.
тут вот так получается "inner_downlad_suffix"  мне нужен в конечном классе
источник

AL

Alexander Levin in Kotlin Community
Pavel Rukin
суть такова что из JSON прилетает $name  просто как строка, а  хотелось бы переопределить какой-то параметр из листа который находится выше.
тут вот так получается "inner_downlad_suffix"  мне нужен в конечном классе
Мне кажется, что это скорее вопрос в том, как парсить данные, а не как выстроить модель.

... Ну и да, я вне контекста, но ощущается, что тут надо забрать "name" из конкретной страны, а не из региона (т.е. в inner_download_prefix должен лежать "denmark")
источник

PR

Pavel Rukin in Kotlin Community
Alexander Levin
Мне кажется, что это скорее вопрос в том, как парсить данные, а не как выстроить модель.

... Ну и да, я вне контекста, но ощущается, что тут надо забрать "name" из конкретной страны, а не из региона (т.е. в inner_download_prefix должен лежать "denmark")
не, мне чотбы обратиться к Api нужно достать строку "europe"  Denmark_europe
http://download.osmand.net/download.php?standard=yes&file=Denmark_europe_2.obf.zip
источник

AL

Alexander Levin in Kotlin Community
Pavel Rukin
не, мне чотбы обратиться к Api нужно достать строку "europe"  Denmark_europe
http://download.osmand.net/download.php?standard=yes&file=Denmark_europe_2.obf.zip
Ну т.е. выглядит, что из самого вложенного inner_download_prefix вы возьмёте denmark, из более наружнего вы возьмёте europe. Но не суть важно, я спокойно могу быть вне контекста, проблему это поменяет конечно, но не так сильно.

По мне проблема такая:
1. Вам приходит json условно не по спеке (ни в json, ни в json5, ни в каком-нибудь json reference нету синтаксиса в таком формате)
2. Ввиду этого вам либо надо самому допарсить содержимое, либо пихать какие-то хаки.
3. Если вы затолкаете явное получение `inner_download_prefix`из другого поля, то на деле вы просто игнорируете что написано в json'е. Если референс там поменяется, то у вас всё взорвётся.

Не уверен, что тут лучше всего делать, но возможно прокатит сначала спарсить втупую, а затем пройтись по всей структуре и пытаться найти строки с долларами в начале и подменить значение. Сделать какой-то умный конструктор, чтобы прямо парсер жсона всё хорошо прожевал - не звучит как лёгкая затея.
источник

PR

Pavel Rukin in Kotlin Community
Alexander Levin
Ну т.е. выглядит, что из самого вложенного inner_download_prefix вы возьмёте denmark, из более наружнего вы возьмёте europe. Но не суть важно, я спокойно могу быть вне контекста, проблему это поменяет конечно, но не так сильно.

По мне проблема такая:
1. Вам приходит json условно не по спеке (ни в json, ни в json5, ни в каком-нибудь json reference нету синтаксиса в таком формате)
2. Ввиду этого вам либо надо самому допарсить содержимое, либо пихать какие-то хаки.
3. Если вы затолкаете явное получение `inner_download_prefix`из другого поля, то на деле вы просто игнорируете что написано в json'е. Если референс там поменяется, то у вас всё взорвётся.

Не уверен, что тут лучше всего делать, но возможно прокатит сначала спарсить втупую, а затем пройтись по всей структуре и пытаться найти строки с долларами в начале и подменить значение. Сделать какой-то умный конструктор, чтобы прямо парсер жсона всё хорошо прожевал - не звучит как лёгкая затея.
Спасибо большое за помощь. на самом деле сначало ко мне приходит все в разметке xml. я просто его сконвертировал в Json
источник

AN

Alexander Nozik in Kotlin Community
Кто знает, в сериализации попралена проблема с тем, что инит блоки вызываются до десериализации? Проверять сложно.
источник

АО

Алексей Овсянников... in Kotlin Community
Alexander Nozik
Кто знает, в сериализации попралена проблема с тем, что инит блоки вызываются до десериализации? Проверять сложно.
Так там же вроде у них есть целый раздел относительно проверки данных?
источник

AN

Alexander Nozik in Kotlin Community
Алексей Овсянников
Так там же вроде у них есть целый раздел относительно проверки данных?
О, хорошо, посмотрю. Потому что раньше там был с этим косяк
источник

AN

Alexander Nozik in Kotlin Community
Алексей Овсянников
Так там же вроде у них есть целый раздел относительно проверки данных?
Спасиб. Увидел, для этого оно должно быть в конструкторе. Подумаю, можно ли это сделать
источник

АО

Алексей Овсянников... in Kotlin Community
Alexander Nozik
Спасиб. Увидел, для этого оно должно быть в конструкторе. Подумаю, можно ли это сделать
👍
источник
2020 December 21

с#

саша сок #KotlinGang... in Kotlin Community
интересно, можно ли будет когда-нибудь написать так

sealed interface Union

extension Bar : Union
extension Baz : Union

fun foo(union: Union)
источник

AN

Alexander Nozik in Kotlin Community
саша сок #KotlinGang
интересно, можно ли будет когда-нибудь написать так

sealed interface Union

extension Bar : Union
extension Baz : Union

fun foo(union: Union)
Какой смысл слова extension?
источник

с#

саша сок #KotlinGang... in Kotlin Community
Alexander Nozik
Какой смысл слова extension?
в комментах отсюда видел

https://youtrack.jetbrains.com/issue/KT-10468
источник

IS

Ivan Sablin in Kotlin Community
саша сок #KotlinGang
интересно, можно ли будет когда-нибудь написать так

sealed interface Union

extension Bar : Union
extension Baz : Union

fun foo(union: Union)
какой-то свифт подъехал))
источник

AN

Alexander Nozik in Kotlin Community
Я думаю, что речь шла о https://github.com/Kotlin/KEEP/blob/sealed-interface-freedom/proposals/sealed-interface-freedom.md. Но расширения тут не при чем вообще
источник