Все ограничения на паблик конструктор и не возможн...
# russian
e
Все ограничения на паблик конструктор и не возможность иметь инитиализаций
g
См этот тред, обсуждали как раз это https://kotlinlang.slack.com/archives/C0B9K7EP2/p1540905904009600
e
оке
спасибо
а что насчет использования их в java
g
см обсуждение
e
оке
вот например
там и про использование из java
e
Copy code
This is needed because of values that can come from Java
я не смог вызвать метод и java
они все имеют
-
в имени
g
потому что поздгнее был добавлен mangling
да
это специально
нужно Keep поправить и убрать эту часть
потому что вызывать просто так из Java больше не получится
поэтому ждем init блоков и способа вызвать конструктор из java
e
а есть ли примеры хорошего использования их?
вот unsigned вроде выглядит здраво
а вот замена строки пароля на класс пароль
g
не вижу ничего плохого с заменой строк
это же добаляет type-safety
e
лучше, так как компилятор проверяет, но на самом деле, никто не останавливает положить что угодно внутрь того же класса
g
ну так это же не про валидацию история
вернее пока не про валидацию
а про то что использовать более специализированые типы
что бы сложнее было перепутать аргументы, что бы писать экстеншены для специализированых типов и не загрезнять автокомплит при этом
e
я услышал 🙂 но пока не прочувствовал, надо пробовать в проде
спасибо!
g
👍
o
С продом аккуратнее, экспериментальная фича всё-таки 🙂
Не забудьте накрыть толстым слоем тестов
e
Я уж сильно оптимистичен, без валидации, преимущества рантайм оптимизации испаряются
UInt(-2)
валидная репрезентация для машины, но мало полезная для человека
g
преимущества рантайм оптимизации испаряются
не правда же
e
а класс имеет интернал констуктор вообще
что простым смертным пока не доступно
для меня важнее валидный email, если я не могу защитить мусор в нем, а я не могу из за паблик конструктора и без блоков инициализации
то применение инлайн классов очень специфическое
g
все еще очень много юзкейсов кроме валидации
e
примеры? 🙂
MoneyDollars
и
MoneyEuro
- не очень
g
типо-специфичные экстеншн функции (ну и просто возможность иметь member функции), обертка не позволяющая применить API неправильно, вроде Milliseconds, Seconds, или тот же Login, Password Еще Result очень сильный пример как обертка для значения
e
думаю, что временные юниты самое оно
не могу придумать пока
Result
применения
g
почти бесплатная Try монада же
обертка для результата операции, которая в случае успешного результата не создает новых объектов
e
А есть пример Try с инлайн классом? Я просто не понимаю как обернуть операцию
g
Result же и есть пример
runCatching в 1.3 что бы обернуть операцию
e
только что проверил
оке, тобто это замена sealed класса
g
Ну можно и так сказать, просто как это противоречит тому что это замена Try?
e
Это не противоречие, а просто другая интерпретация
g
почему? Try через Sealed классы в котлине всегда имплементят и функционально Result ему близок, хоть из коробки и flatMap нет inline классы пока не замена sealed в общем случае, только в специфичных, как тут
e
оке, я просто был не знаком с Тry, но Result класс мне знаком и близок