Size: a a a

Kotlin Community

2020 May 07

AL

Alexander Levin in Kotlin Community
Alexander Nozik
Union type скорее нужны. Так же как и более человечный синтаксис для пересечений (вот единственное, пожалуй, что я бы из Dotty утащил). Но нулябли - это не совсем юнионы с точки зрения использования.
А расскажите, чем Котлиновский nullable не похож на частный случай union type, кроме того, что для него добавили пару операторов?
источник

AN

Alexander Nozik in Kotlin Community
Alexander Levin
А расскажите, чем Котлиновский nullable не похож на частный случай union type, кроме того, что для него добавили пару операторов?
Пресловутый ??, чейн-колы в синтаксисе. Правила наследования для всяких прелестей вроде Nothing?
источник

AN

Alexander Nozik in Kotlin Community
Напыщенное Эго
За тем, что union типы решают не только проблему нуллябельности. Я перечислил то, что как мне кажется, еще они решают:
- catch блок
- seald классы
- лучше интероп с js/ts
Кто же спорит? Тем не менее, у нас есть удобный и хороший инструмент для нулябельности, который перекрывает 95% кейсов без потерь производительности и проблем с интеропом, но нет сум типов (пока).
источник

AL

Alexander Levin in Kotlin Community
Alexander Nozik
Пресловутый ??, чейн-колы в синтаксисе. Правила наследования для всяких прелестей вроде Nothing?
T?? = T | Null | Null = T | Null = T?, разницы нету.
Чейн-коллы - просто специальный оператор, не меняющий сути типа. Как и упомянул выше, в Цейлоне специальные операторы были тоже, насколько я понимаю.
Nothing? = Nothing | Null, тоже не вижу ничего специфичного.
источник

AN

Alexander Nozik in Kotlin Community
Alexander Levin
T?? = T | Null | Null = T | Null = T?, разницы нету.
Чейн-коллы - просто специальный оператор, не меняющий сути типа. Как и упомянул выше, в Цейлоне специальные операторы были тоже, насколько я понимаю.
Nothing? = Nothing | Null, тоже не вижу ничего специфичного.
А теперь сравните написание T|Null и T?. Не говоря уже о том, что надо специальный тип для null вводить и это вероятно сломает много чего. Я если что за суммы типов, и если они будут введены таким образом, чтобы включать нулябли, я совершенно не буду возражать. Но сидеть и ждать значительно более сложной фичи, решающей 5% кейсов вместо того, чтобы пользоваться простой фичей, которая решает 95% случаев - это странно.
источник

AM

Andrew Mikhaylov in Kotlin Community
Alexander Nozik
А теперь сравните написание T|Null и T?. Не говоря уже о том, что надо специальный тип для null вводить и это вероятно сломает много чего. Я если что за суммы типов, и если они будут введены таким образом, чтобы включать нулябли, я совершенно не буду возражать. Но сидеть и ждать значительно более сложной фичи, решающей 5% кейсов вместо того, чтобы пользоваться простой фичей, которая решает 95% случаев - это странно.
| null против ? -- это туда же к "кроме того, что для него добавили пару операторов", КМК.
источник

AM

Andrew Mikhaylov in Kotlin Community
Просто специальный синтаксис для конкретного случая.
источник

AN

Alexander Nozik in Kotlin Community
Andrew Mikhaylov
Просто специальный синтаксис для конкретного случая.
ну так да. Я же про это и говорю. Он решает свою задачу. Если он сделан совместимым с более широким понятием - отлично. Но и так хорошо.
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexander Nozik
А теперь сравните написание T|Null и T?. Не говоря уже о том, что надо специальный тип для null вводить и это вероятно сломает много чего. Я если что за суммы типов, и если они будут введены таким образом, чтобы включать нулябли, я совершенно не буду возражать. Но сидеть и ждать значительно более сложной фичи, решающей 5% кейсов вместо того, чтобы пользоваться простой фичей, которая решает 95% случаев - это странно.
Мне кажется, если ввести специальный тип для null и вывести Nothing? через него - ничего не сломается.
Какая же красивая иерархия типов в котлине!
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
Мне кажется, если ввести специальный тип для null и вывести Nothing? через него - ничего не сломается.
Какая же красивая иерархия типов в котлине!
Возможно. По-моему в кипе лежало предложение по суммам типов. Дорабатывайте.  Фича, я согласен, нужная.
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexander Nozik
Возможно. По-моему в кипе лежало предложение по суммам типов. Дорабатывайте.  Фича, я согласен, нужная.
Ну лично я не настолько страдаю из-за их отсутствия (вроде бы), да и не представляю, во что это могло бы компилироваться, сложнааа! Пока и так норм 🙂
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
Ну лично я не настолько страдаю из-за их отсутствия (вроде бы), да и не представляю, во что это могло бы компилироваться, сложнааа! Пока и так норм 🙂
Вот и я про то же
источник

AN

Alexander Nozik in Kotlin Community
Мне суммы типов нужны практически только на уровне интеропа с TS
источник

Н

Напыщенное Эго... in Kotlin Community
Alexander Nozik
Возможно. По-моему в кипе лежало предложение по суммам типов. Дорабатывайте.  Фича, я согласен, нужная.
KEEP'a вроде нет. Я не нашел. Есть только тема на форуме. Где как будто бы одбились от нападок сообщества по этой теме и всё затихло. Но это было давно 5 лет назад https://discuss.kotlinlang.org/t/union-types/77
источник

AN

Alexander Nozik in Kotlin Community
Где-то точно было. Чувак предлагал сделать сейчас | синтаксис как сахар над генерацией силед типов.
источник

VP

Vladimir Petrakovich in Kotlin Community
На таком точно далеко не уедешь
источник

VP

Vladimir Petrakovich in Kotlin Community
Это как Optional<T> против T?
источник

AL

Alexander Levin in Kotlin Community
Alexander Nozik
А теперь сравните написание T|Null и T?. Не говоря уже о том, что надо специальный тип для null вводить и это вероятно сломает много чего. Я если что за суммы типов, и если они будут введены таким образом, чтобы включать нулябли, я совершенно не буду возражать. Но сидеть и ждать значительно более сложной фичи, решающей 5% кейсов вместо того, чтобы пользоваться простой фичей, которая решает 95% случаев - это странно.
Ну я же не зря упоминал Цейлон. Там T? и является алиасом для  T | Null по сути
источник

AN

Alexander Nozik in Kotlin Community
Vladimir Petrakovich
На таком точно далеко не уедешь
Почему это не уедешь. Это временное решение, которое позволяет обкатать синтаксис. Его можно реализовать таким образом, чтобы потом можно было подменить реализацию на более оптимизированную. Без создания дополнительных классов - оберток.
источник

VP

Vladimir Petrakovich in Kotlin Community
Alexander Nozik
Почему это не уедешь. Это временное решение, которое позволяет обкатать синтаксис. Его можно реализовать таким образом, чтобы потом можно было подменить реализацию на более оптимизированную. Без создания дополнительных классов - оберток.
Это не оптимизация, это изменение смысла
источник