@kotlin_lang

Страница 582 из 982
Alexey
14.03.2018
16:11:34
Для кого-то это повод его любить, да, но я пытаюсь судить по его докладам
Он слишком уж фанатично отстаивает свои убеждения

Boris
14.03.2018
16:14:19
Оффтоп, конечно, предлагаю заканчивать

Руслан
14.03.2018
16:16:53


И inline классы!

Google
Boris
14.03.2018
16:18:09
Странная у него декларация

У резалта

Руслан
14.03.2018
16:18:25


Вот как _возможно_ будет выглядеть inline классы, в данном случае Result

Boris
14.03.2018
16:20:03
Roman
14.03.2018
16:20:06
а запись будет где-либо доступна? а то сейчас нет возможности подключиться

Руслан
14.03.2018
16:20:20
Она не youtube останется наверняка

Не думаю что её удалят сразу

Andrey
14.03.2018
16:20:38
а что значит, когда "get()" присваивают значение?

Руслан
14.03.2018
16:20:50
https://t.me/TheDailyKotlin/25 - вот трансляция если что

а что значит, когда "get()" присваивают значение?
это стандартное объявление геттера

Boris
14.03.2018
16:22:02
Немного криво выглядит такая реализация

Хоть и рабочая

Google
Andrew
14.03.2018
16:22:59
Зато одно поле вместо двух. В целом идея с приватным классом вполне себе клёвая.

Руслан
14.03.2018
16:23:34
а что значит, когда "get()" присваивают значение?
вот https://kotlinlang.org/docs/reference/functions.html#single-expression-functions и вот https://kotlinlang.org/docs/reference/properties.html#getters-and-setters

Boris
14.03.2018
16:25:14
Зато одно поле вместо двух. В целом идея с приватным классом вполне себе клёвая.
Да это понятно, просто тут как будто напрашивается ещё юнион

Andrew
14.03.2018
16:25:50
а вот тебе и вопрос о юнионах :)

Boris
14.03.2018
16:26:45
а вот тебе и вопрос о юнионах :)
Уже кто-то его задавал?

Наверняка

Andrew
14.03.2018
16:27:19
только что спросили об алгебраических типах — ответом было "у нас есть sealed, правда они не совмещаются с инлайн-классами".

так что считай ответа не было :D

Boris
14.03.2018
16:28:05
Аа

Я просто не смотрю

Andrew
14.03.2018
16:28:58
ну Руслан предусмотрительно дублирует инфу, а я завтыкал, прошу прощения :)

Руслан
14.03.2018
16:33:48


Тут думаю понятно

Ivan
14.03.2018
16:34:59
О,даааа

Руслан
14.03.2018
16:35:16


Ivan
14.03.2018
16:35:18
Для котлин нейтив бесценно

Andrew
14.03.2018
16:36:33
Чую, будет на границе с JNI тоскливо — каст на касте и кастом погоняется. А вообще да, можно будет тут же выкинуть kotlin-unsigned :) И с нэйтивом круто.

Andrew
14.03.2018
16:38:19
Да, и именно эти jint / jlong будут в сишном интерфейсе :( а он уже первым делом будет кастовать к uint32_t и uint64_t.

Google
Nikita
14.03.2018
16:39:24
Народ - а можете в кратце рассказать приемущества и кейсы где было бы удобно использовать эти же inline классы? Что под капотом у нового лонг и инт, максимальные значения надеюсь будут больше?

Ivan
14.03.2018
16:40:27
Ну я так понимаю что примерно там же где и value types

Andrew
14.03.2018
16:40:33
inline-class — это чёт вроде typealias, только на самом деле на стороне котлина создаёт новый тип, а не просто добавляет новое имя существующему.

Руслан
14.03.2018
16:41:38


Andrew
14.03.2018
16:41:54
typealias Temperature = Float val temp: Temperature = 1.0 val f: Float = temp // валидно inline class Temperature(t: Float) val temp: Temperature = 1.0 val f: Float = temp // ошибка компиляции

Nikita
14.03.2018
16:42:28
я понял. Но вот профит так и не вижу)

Руслан
14.03.2018
16:42:48
я понял. Но вот профит так и не вижу)
Не будет создаваться объект-обертка на рантайме

Кажется что это чисто про перформанс

Andrew
14.03.2018
16:43:29
inline class Temperature(t: Float) inline class Price(cents: Float) val p: Price = Temperature(1.0) // ошибка компиляции

аналогичный пример с тайпалиасами скомпилируется

ну и да, инлайн-классы дадут возможность определять любые свойства на этом типе, в т.ч. переопределять операторы и тустринги.

Boris
14.03.2018
16:44:59
А какие огорчения есть инфа?

Boris
14.03.2018
16:45:06
Помимо одного поля

Andrew
14.03.2018
16:45:48
А профит инлайна перед обычным классом — да, перформанс, на каждый обычный класс будет по два объекта (сам объект и то, что под капотом лежит), инлайн — один. и с примитивами без бокса он работать будет.

Andrew
14.03.2018
16:46:02
Нет, только об одном боле сказали.

Boris
14.03.2018
16:47:02
?

Юнион можно было бы сделать не сложно с оверхедом

Руслан
14.03.2018
16:49:38


Google
Boris
14.03.2018
16:53:41
Через Any? и касты?
Ну да, главное, чтобы инлайн классы это понимали

Руслан
14.03.2018
16:54:01






Andrew
14.03.2018
17:00:12
почему нету SAM для Kotlin-интерфейсов: "а мы думали, что всем просто хватит функциональных типов" :D

Руслан
14.03.2018
17:01:22


Andrew
14.03.2018
17:01:27
(правда, зачем они нужны при наличии функциональных типов и инлайн-классов?)

Admin
ERROR: S client not available

Andrew
14.03.2018
17:02:58
¯\_(ツ)_/¯ ребята, пришедшие из Kotlin/JS, не поймут

а вот и легаси в котлине — ключевое слово нужно потому, что для обычных интерфейсов sam-правила не хотят вводить, чтобы не сломать старый код

Mikhail
14.03.2018
17:05:16
лучше бы вообще без этого

Andrew
14.03.2018
17:06:44
согласен

Mikhail
14.03.2018
17:08:40
если кто-то не хочет расставаться с джавовыми привычками - пускай страдает

Andrew
14.03.2018
17:10:20
я готов поставить подпись, куда идти?)

по-моему ж когда глобально собирали желаемые фичи, против SAM для котлина немало голосов было

Руслан
14.03.2018
17:11:05


Даниил
14.03.2018
17:11:11
ооо, круто

Google
Mikhail
14.03.2018
17:11:27
кто все эти люди??

Andrew
14.03.2018
17:11:41
значит неправильно помню, спасибо. :/

Igor
14.03.2018
17:11:52
по-моему ж когда глобально собирали желаемые фичи, против SAM для котлина немало голосов было
Да 100% это просто нужно было для их разработки IDEA (там же куча микса kotlin/java), поэтому и впилили

Mikhail
14.03.2018
17:12:21
судя по результатом голосов, опрашивали питонистов

Vladimir
14.03.2018
17:13:39
У меня возникает только один вопрос: когда релиз 1.3? Столько плюшек классных

Boris
14.03.2018
17:13:44
?

Andrew
14.03.2018
17:13:54
Да 100% это просто нужно было для их разработки IDEA (там же куча микса kotlin/java), поэтому и впилили
inline class Predicate<T>(test: (T) -> Boolean) из джавы, насколько я понимаю, это будет видно как KFunction<Boolean, T> (или как там этот класс выглядит). вполне себе юзабельно на точке соприкосновения.

Руслан
14.03.2018
17:14:02
Andrew
14.03.2018
17:17:01
судя по схемке, хрен нам, а не удобство при разработке плагинов для компилятора.



Руслан
14.03.2018
17:17:52
Ну если будет Common BE (Common Backend)

Andrew
14.03.2018
17:18:02
(JVM BE + JS BE — то, что есть сейчас, Common BE — то, что сделали, когда начали делать нэйтив, JVM / JS Codegen — в планах)

Ну если будет Common BE (Common Backend)
там, вероятно, будет уже IR, то бишь нечто сильно более низкоуровневое, чем AST. да, так и есть.

а я-то думаю, что это за PR в нэйтиве о возможности композитной сборки со взрослым котлином :)

Nikita
14.03.2018
17:22:39
Руслан
14.03.2018
17:23:17


Очень хочется IR as public API

Andrew
14.03.2018
17:24:27
(оффтоп: Руслан, посмотрел недавно доклад по Ktor с BKUG — спасибо огромное, очень круто!)

Boris
14.03.2018
17:31:42
@HeapyHop огромное спасибо за трансляцию, к сожалению не было возможности посмотреть

Самому

Очень хочется IR as public API
К этому все и шло

Страница 582 из 982