Size: a a a

2019 July 27

AO

Alexey Otts in Kotlin JVM
Andrew Mikhaylov
inline class, наверное, имелся в виду. Why not?
Ну он все ещё существует на рантайме и даёт свои накладные расходы в тех же list
источник

QH

Quantum Harmonizer in Kotlin JVM
Alexey Otts
Ну он все ещё существует на рантайме и даёт свои накладные расходы в тех же list
экземпляр? существует только тогда, когда он сбежал от компилятора
источник

AO

Alexey Otts in Kotlin JVM
Quantum Harmonizer
экземпляр? существует только тогда, когда он сбежал от компилятора
Ну когда ты делаешь List<ValueClass> оно уже убегает
источник

AM

Andrew Mikhaylov in Kotlin JVM
Alexey Otts
Ну он все ещё существует на рантайме и даёт свои накладные расходы в тех же list
Ну дык а как иначе его там отличать от вложенного типа?
источник

QH

Quantum Harmonizer in Kotlin JVM
ну да, конец немного предсказуем
источник

AO

Alexey Otts in Kotlin JVM
Andrew Mikhaylov
Ну дык а как иначе его там отличать от вложенного типа?
Эио все должно быть известно на этапе компиляции
источник

QH

Quantum Harmonizer in Kotlin JVM
если с массивами ещё можно поспорить, то с листами уже всё мутно
источник

AO

Alexey Otts in Kotlin JVM
Короче есть хороший пример реализации - haskell и плохие - scala и kotlin
источник

AO

Alexey Otts in Kotlin JVM
В скалке из-за бага компилятора получалось таки сделать синтетические newtype
источник

AO

Alexey Otts in Kotlin JVM
В котлине же это совсем не возможно
источник

QH

Quantum Harmonizer in Kotlin JVM
В скале же reified generics?
источник

AO

Alexey Otts in Kotlin JVM
Quantum Harmonizer
В скале же reified generics?
Разверни пожалуйста мысль
источник

AM

Andrew Mikhaylov in Kotlin JVM
Alexey Otts
Разверни пожалуйста мысль
Ну, в рантайме типовые параметры дженериков стрюираются или их можно сохранить?
источник

QH

Quantum Harmonizer in Kotlin JVM
Alexey Otts
Разверни пожалуйста мысль
Скала не специализирует generic-классы для конкретных значений типовых параметров?
источник

AO

Alexey Otts in Kotlin JVM
Quantum Harmonizer
Скала не специализирует generic-классы для конкретных значений типовых параметров?
Специализация через аннотации есть, но newtype про другое. Можно условно сделать

newtype UserId = Int


List[UserId] всегда сотрётся до int и ты не сможешь пихнуть в этот List просто int, потому что для компилятора это разные типы
источник

AO

Alexey Otts in Kotlin JVM
А простые value type уже сделают настоящие обертки
источник

AO

Alexey Otts in Kotlin JVM
Andrew Mikhaylov
Ну, в рантайме типовые параметры дженериков стрюираются или их можно сохранить?
Впринципе можно попросить компилятор сгенерировать описание типа, которое потом можно использовать в рантайме
источник

AO

Alexey Otts in Kotlin JVM
А так да дженерики так же как и везде стираются
источник

QH

Quantum Harmonizer in Kotlin JVM
Alexey Otts
Специализация через аннотации есть, но newtype про другое. Можно условно сделать

newtype UserId = Int


List[UserId] всегда сотрётся до int и ты не сможешь пихнуть в этот List просто int, потому что для компилятора это разные типы
и что будет, если скастить List[UserId] к List[Int] или отфильтровать по типу?
источник

AO

Alexey Otts in Kotlin JVM
Ну каст это ты условно посылаешь нахер компилятор. А фильтр по типу, ну тут тоже надо понимать что это рантайм проверки, а ньютайп это только уровень компиляции
источник