https://kotlinlang.org logo
#russian
Title
# russian
d

Dima Avdeev

11/02/2019, 5:36 AM
А когда inline классы будут работать в JS? Сейчас код компилируется, но сам класс не инлайнится.
a

altavir

11/02/2019, 6:31 AM
А зачем вам его инлайнить в JS? Кроме того, какой конкретно кейс?
d

Dima Avdeev

11/02/2019, 7:49 AM
Хочется использовать типобезопасный Int. Чтобы в одном случае Int например имел смысл времени, а в другом смысл координаты. И чтобы была compile-time проверка на использование этих переменных. inline классы как раз очень хорошо подходят для создания новых типов бех оверхеда по производительности
А ещё это поможет немного уменьшить размер результирующего bundle.js
a

altavir

11/02/2019, 7:53 AM
Это понятно. Вопрос в том, в какой ситуации вы его используете. Любые нулябли или запихивание в список сразу генерируют обёртку.
d

Dima Avdeev

11/02/2019, 7:57 AM
Про 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

Svyatoslav Kuzmich [JB]

11/02/2019, 8:17 AM
Инлайн классы в JS будут в новом бекенде. И
SafeCoordinate?
в отличии от JVM там не будет бокситься
d

Dima Avdeev

11/02/2019, 8:25 AM
Спасибо. И то что не будет боксится это круто!
А если в список складывать по конкретному типу: List<SafeCoordinate> Будет боксится ?
a

altavir

11/02/2019, 8:26 AM
да, даже на JVM
d

Dima Avdeev

11/02/2019, 8:27 AM
Буду иметь ввиду!
А если не список, а массив Array<SafeCoordinate> Будет боксится?
a

altavir

11/02/2019, 8:29 AM
Скорее всего да, хотя тут я не уверен. Там есть мысль разрешить общественное использование
inlineOnly
, но пока не реализовано
d

Dima Avdeev

11/02/2019, 8:30 AM
@Svyatoslav Kuzmich [JB] А когда примерно ожидать новый бекенд компилятора ?
a

altavir

11/02/2019, 8:30 AM
В JB никогда не называют сроков 🙂
d

Dima Avdeev

11/02/2019, 8:32 AM
Наверное появится в kotlin 1.4 ?
a

altavir

11/02/2019, 8:34 AM
Вероятно
Что-то можно уже сейчас ключами подключить, но я не уверен, что именно
d

Dima Avdeev

11/02/2019, 8:37 AM
Copy code
all {
    languageSettings.enableLanguageFeature(
        "InlineClasses"
    )
}
Вот так в gradle выставил
a

altavir

11/02/2019, 8:37 AM
не, не это. Я имею в виду новый бекэнд. Эта штука только ворнинги убирает
d

Dima Avdeev

11/02/2019, 8:38 AM
А, понял. Надо будет поизучать на досуге.
3 Views