Size: a a a

Kotlin Community

2019 December 24

BP

Bogdan Panchenko in Kotlin Community
а ну такое хотелось бы
источник

VP

Vladimir Petrakovich in Kotlin Community
Ну такое, тогда два разных класса с одинаковым содержимым будут считаться одинаковыми
источник

AM

Andrew Mikhaylov in Kotlin Community
Vladimir Petrakovich
Ну такое, тогда два разных класса с одинаковым содержимым будут считаться одинаковыми
Так я ж про сравнение типа, а не о содержимом
источник

VP

Vladimir Petrakovich in Kotlin Community
Andrew Mikhaylov
Так я ж про сравнение типа, а не о содержимом
Сравнение типа, который внутри, через is InlineClass?
Не представляю, где это может понадобиться
источник

AM

Andrew Mikhaylov in Kotlin Community
Vladimir Petrakovich
Сравнение типа, который внутри, через is InlineClass?
Не представляю, где это может понадобиться
Посмотри на скрины, которые я в начале дискуссии привёл.
источник

VP

Vladimir Petrakovich in Kotlin Community
Andrew Mikhaylov
Посмотри на скрины, которые я в начале дискуссии привёл.
Смотрел, но ничего не понял(
источник

AM

Andrew Mikhaylov in Kotlin Community
Ну я без ноута не поясню детальнее, что в виду имелось, к сожалению.
источник

BP

Bogdan Panchenko in Kotlin Community
Vladimir Petrakovich
Смотрел, но ничего не понял(
когда primiiveClass это одна сущность, но на разных платформармах своя
источник

BP

Bogdan Panchenko in Kotlin Community
возмем is Int, что это значит ? в нейтиве напрмер вполне могут быть int16, int32, int64. но для котлин платформы есть один строгий инт и это int32
источник

BP

Bogdan Panchenko in Kotlin Community
инлайн классы в текущем ввиле могут принести проблему примитивов из jm
источник

AM

Andrew Mikhaylov in Kotlin Community
Ты чёт опять сложное про примитивы. На скринах пример с датой. На всех трёх платформах она выражается разными типами. Варианта врапнуть дату для коммон-кода два.
1. Так, как это на скринах сделано. Есть пустой экспект, есть экшуал тайпалиасы. Методы тогда добавляются либо свободными функциями, либо экспект+экшуал экстеншнами на этом пустом типе.
2. Полноценный экспект класс с методами, слизанными с одной из платформ. Экшуал тайпалиас на одной платформе, экшуал классы с реализациями-адаптерами на остальных. Привет, боксинг.

О чём я. Экшуал инлайны в данном случае зашли бы, которые вообще никогда не боксятся. Нет смысла различать actual inline class MyMultiplatformDate(val value: NSDate) и просто NSDate.
источник

VP

Vladimir Petrakovich in Kotlin Community
Andrew Mikhaylov
Ты чёт опять сложное про примитивы. На скринах пример с датой. На всех трёх платформах она выражается разными типами. Варианта врапнуть дату для коммон-кода два.
1. Так, как это на скринах сделано. Есть пустой экспект, есть экшуал тайпалиасы. Методы тогда добавляются либо свободными функциями, либо экспект+экшуал экстеншнами на этом пустом типе.
2. Полноценный экспект класс с методами, слизанными с одной из платформ. Экшуал тайпалиас на одной платформе, экшуал классы с реализациями-адаптерами на остальных. Привет, боксинг.

О чём я. Экшуал инлайны в данном случае зашли бы, которые вообще никогда не боксятся. Нет смысла различать actual inline class MyMultiplatformDate(val value: NSDate) и просто NSDate.
То есть вся задумка в том, чтобы не боксить actual inline class в случаях, когда обычно это делается?
источник

AM

Andrew Mikhaylov in Kotlin Community
Vladimir Petrakovich
То есть вся задумка в том, чтобы не боксить actual inline class в случаях, когда обычно это делается?
Ну, да. В чате давно уже мелькали мысли, что было бы круто уметь не боксить инлайны, когда программисту это не надо, вот один из конкретных примеров, когда такое может быть полезно.
источник

BP

Bogdan Panchenko in Kotlin Community
Andrew Mikhaylov
Ты чёт опять сложное про примитивы. На скринах пример с датой. На всех трёх платформах она выражается разными типами. Варианта врапнуть дату для коммон-кода два.
1. Так, как это на скринах сделано. Есть пустой экспект, есть экшуал тайпалиасы. Методы тогда добавляются либо свободными функциями, либо экспект+экшуал экстеншнами на этом пустом типе.
2. Полноценный экспект класс с методами, слизанными с одной из платформ. Экшуал тайпалиас на одной платформе, экшуал классы с реализациями-адаптерами на остальных. Привет, боксинг.

О чём я. Экшуал инлайны в данном случае зашли бы, которые вообще никогда не боксятся. Нет смысла различать actual inline class MyMultiplatformDate(val value: NSDate) и просто NSDate.
я к примеру что это уже делается на уровне компилятора
источник

BP

Bogdan Panchenko in Kotlin Community
Andrew Mikhaylov
Ну, да. В чате давно уже мелькали мысли, что было бы круто уметь не боксить инлайны, когда программисту это не надо, вот один из конкретных примеров, когда такое может быть полезно.
честно, инлайн классы не нужны, нужны -  типы. которые будут компайлтайм
источник
2019 December 25

🐳V

🐳 Deep Velocity 🐳 in Kotlin Community
Господа, по работе тут уместно спрашивать?
источник

NM

Nick Marchuk in Kotlin Community
🐳 Deep Velocity 🐳
Господа, по работе тут уместно спрашивать?
Смотря что имеется ввиду
источник

K

Kopusha in Kotlin Community
Фигню наверное спрашиваю, но можно такое сделать?

interface IFoo<A>
class Foo: IFoo<String>

class Bar<A>: IFoo<A>

inline fun <reified T: IFoo<*>> createBar(){
   val type = T::class.supertypes[0].arguments[0].type // String

   // Bar2<type>() ??
}

createBar<Foo>()

Т.е. тип вроде не потерялся, он видит, что там String. Но как создать Bar<String>() оттуда?
источник

AE

Alexandr Emelyanov in Kotlin Community
Kopusha
Фигню наверное спрашиваю, но можно такое сделать?

interface IFoo<A>
class Foo: IFoo<String>

class Bar<A>: IFoo<A>

inline fun <reified T: IFoo<*>> createBar(){
   val type = T::class.supertypes[0].arguments[0].type // String

   // Bar2<type>() ??
}

createBar<Foo>()

Т.е. тип вроде не потерялся, он видит, что там String. Но как создать Bar<String>() оттуда?
inline fun <reified T: IFoo<V>, V> createBar() : Bar<V> {
   return Bar<V>()
}
источник

AE

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