Size: a a a

Kotlin Community

2020 June 26

RU

Roman Ushakov in Kotlin Community
Vladimir Petrakovich
Ну в JVM так же
а, если коллекция поле класса? Вроде можно же?
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
Ну в JVM так же
Там на самом деле даже если спросишь, то  не факт, что получишь ответ и не факт, что он тебе понравится, duck typing
источник

VP

Vladimir Petrakovich in Kotlin Community
Roman Ushakov
а, если коллекция поле класса? Вроде можно же?
Тип поля через рефлексию узнать можно, а если у тебя на руках только объект коллекции  - нет
источник

AN

Alexander Nozik in Kotlin Community
Andrei
Почему нет? Там же Kotlin типы а не обычный JS
Не понял. Массив не знает какого типа объекты в нем лежат
источник

АО

Алексей Овсянников... in Kotlin Community
В js с типами всё очень печально, на самом деле
источник

RU

Roman Ushakov in Kotlin Community
Vladimir Petrakovich
Тип поля через рефлексию узнать можно, а если у тебя на руках только объект коллекции  - нет
ну это да, стирание типов
источник

AN

Alexander Nozik in Kotlin Community
Алексей Овсянников
В js с типами всё очень печально, на самом деле
Угу. Они еще и очень долго проверяются даже там, где это можно проверить
источник

АО

Алексей Овсянников... in Kotlin Community
если я не ошибаюсь, без костылей можно разве что тип object получить
источник

АО

Алексей Овсянников... in Kotlin Community
есть instanceof, НО, как и написал @noraltavir , он не очень производительный
источник

AN

Alexander Nozik in Kotlin Community
Алексей Овсянников
если я не ошибаюсь, без костылей можно разве что тип object получить
Можно определить object, массив или примитив. Ну и нул. Все остальное - только если поддерживается отдельное поле или через попу по прототипу
источник

A

Andrei in Kotlin Community
Alexander Nozik
Не понял. Массив не знает какого типа объекты в нем лежат
Обьект generic типа, почему где-то в метаданных не хранить этот тип на уровне компилятора и генерируемого кода
источник

АО

Алексей Овсянников... in Kotlin Community
ну да, я о том и говорю
источник

AN

Alexander Nozik in Kotlin Community
Andrei
Обьект generic типа, почему где-то в метаданных не хранить этот тип на уровне компилятора и генерируемого кода
Так это и есть reified. Без инлайна вы не можете залезть в метадату. В рантайме ее нет
источник

BP

Bogdan Panchenko in Kotlin Community
Andrei
Обьект generic типа, почему где-то в метаданных не хранить этот тип на уровне компилятора и генерируемого кода
Что бы и так не раздувать сгенерированный js ?
источник

A

Andrei in Kotlin Community
Alexander Nozik
Так это и есть reified. Без инлайна вы не можете залезть в метадату. В рантайме ее нет
Я понимаю почему так на JVM, но на JS почему?
источник

BP

Bogdan Panchenko in Kotlin Community
Andrei
Я понимаю почему так на JVM, но на JS почему?
Так в нем ещё все хуже
источник

AN

Alexander Nozik in Kotlin Community
Andrei
Я понимаю почему так на JVM, но на JS почему?
Ровно по тому же самому. Откуда вы в рантайме возьмете тип объекта? Его может вообще не быть
источник

AN

Alexander Nozik in Kotlin Community
В JVM, как верно замечено, хоть маркер типа есть в байткоде. В JS и этого нет
источник

A

Andrei in Kotlin Community
Не эксперт по JS, но мне казалось нет проблемы это обойти если генерить код, сгенерить еще дополнительное поле/параметр с тэгом для типа
источник

AN

Alexander Nozik in Kotlin Community
Andrei
Не эксперт по JS, но мне казалось нет проблемы это обойти если генерить код, сгенерить еще дополнительное поле/параметр с тэгом для типа
Сколько это стоить будет?
источник