А когда inline классы будут работать в JS? Сейчас ...
# russian
d
А когда inline классы будут работать в JS? Сейчас код компилируется, но сам класс не инлайнится.
a
А зачем вам его инлайнить в JS? Кроме того, какой конкретно кейс?
d
Хочется использовать типобезопасный Int. Чтобы в одном случае Int например имел смысл времени, а в другом смысл координаты. И чтобы была compile-time проверка на использование этих переменных. inline классы как раз очень хорошо подходят для создания новых типов бех оверхеда по производительности
А ещё это поможет немного уменьшить размер результирующего bundle.js
a
Это понятно. Вопрос в том, в какой ситуации вы его используете. Любые нулябли или запихивание в список сразу генерируют обёртку.
d
Про nullable знал, а вот про списки наверное речь идёт о том что inline класс, реализующий какой-то интерфейс. У меня потребность использовать как координату. inline class SafeCoordinate(value: Int) class DisplayObject { val x : SafeCoordinate val y : SafeCoordinate } val displayObjects : List<DisplayObject>
Получается что сам inline класс не Nullable и в списке не лежит
собственно я делаю игрушку на Kolin JS https://masspower.net/ Хочу потом сделать её opensource и статью написть
Как альтернативу я сейчас использую typealias // typealias SafeCoordinate = Int // releaseCode class SafeCoordinate(value : Int) // debugCode И в тот момент когда я хочу собрать релиз - я просто переключаю комментарий с одной строки на другую
s
Инлайн классы в JS будут в новом бекенде. И
SafeCoordinate?
в отличии от JVM там не будет бокситься
d
Спасибо. И то что не будет боксится это круто!
А если в список складывать по конкретному типу: List<SafeCoordinate> Будет боксится ?
a
да, даже на JVM
d
Буду иметь ввиду!
А если не список, а массив Array<SafeCoordinate> Будет боксится?
a
Скорее всего да, хотя тут я не уверен. Там есть мысль разрешить общественное использование
inlineOnly
, но пока не реализовано
d
@Svyatoslav Kuzmich [JB] А когда примерно ожидать новый бекенд компилятора ?
a
В JB никогда не называют сроков 🙂
d
Наверное появится в kotlin 1.4 ?
a
Вероятно
Что-то можно уже сейчас ключами подключить, но я не уверен, что именно
d
Copy code
all {
    languageSettings.enableLanguageFeature(
        "InlineClasses"
    )
}
Вот так в gradle выставил
a
не, не это. Я имею в виду новый бекэнд. Эта штука только ворнинги убирает
d
А, понял. Надо будет поизучать на досуге.