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

Eugen Martynov

10/31/2018, 8:46 AM
Все ограничения на паблик конструктор и не возможность иметь инитиализаций
g

gildor

10/31/2018, 8:49 AM
См этот тред, обсуждали как раз это https://kotlinlang.slack.com/archives/C0B9K7EP2/p1540905904009600
e

Eugen Martynov

10/31/2018, 8:51 AM
оке
спасибо
а что насчет использования их в java
g

gildor

10/31/2018, 8:52 AM
см обсуждение
e

Eugen Martynov

10/31/2018, 8:52 AM
оке
вот например
там и про использование из java
e

Eugen Martynov

10/31/2018, 8:53 AM
Copy code
This is needed because of values that can come from Java
я не смог вызвать метод и java
они все имеют
-
в имени
g

gildor

10/31/2018, 8:54 AM
потому что поздгнее был добавлен mangling
да
это специально
нужно Keep поправить и убрать эту часть
потому что вызывать просто так из Java больше не получится
поэтому ждем init блоков и способа вызвать конструктор из java
e

Eugen Martynov

10/31/2018, 9:04 AM
а есть ли примеры хорошего использования их?
вот unsigned вроде выглядит здраво
а вот замена строки пароля на класс пароль
g

gildor

10/31/2018, 9:06 AM
не вижу ничего плохого с заменой строк
это же добаляет type-safety
e

Eugen Martynov

10/31/2018, 9:06 AM
лучше, так как компилятор проверяет, но на самом деле, никто не останавливает положить что угодно внутрь того же класса
g

gildor

10/31/2018, 9:07 AM
ну так это же не про валидацию история
вернее пока не про валидацию
а про то что использовать более специализированые типы
что бы сложнее было перепутать аргументы, что бы писать экстеншены для специализированых типов и не загрезнять автокомплит при этом
e

Eugen Martynov

10/31/2018, 9:13 AM
я услышал 🙂 но пока не прочувствовал, надо пробовать в проде
спасибо!
g

gildor

10/31/2018, 9:14 AM
👍
o

orangy

10/31/2018, 9:32 AM
С продом аккуратнее, экспериментальная фича всё-таки 🙂
Не забудьте накрыть толстым слоем тестов
e

Eugen Martynov

10/31/2018, 9:55 AM
Я уж сильно оптимистичен, без валидации, преимущества рантайм оптимизации испаряются
UInt(-2)
валидная репрезентация для машины, но мало полезная для человека
g

gildor

10/31/2018, 9:58 AM
преимущества рантайм оптимизации испаряются
не правда же
e

Eugen Martynov

10/31/2018, 9:58 AM
а класс имеет интернал констуктор вообще
что простым смертным пока не доступно
для меня важнее валидный email, если я не могу защитить мусор в нем, а я не могу из за паблик конструктора и без блоков инициализации
то применение инлайн классов очень специфическое
g

gildor

10/31/2018, 10:01 AM
все еще очень много юзкейсов кроме валидации
e

Eugen Martynov

10/31/2018, 10:01 AM
примеры? 🙂
MoneyDollars
и
MoneyEuro
- не очень
g

gildor

10/31/2018, 10:04 AM
типо-специфичные экстеншн функции (ну и просто возможность иметь member функции), обертка не позволяющая применить API неправильно, вроде Milliseconds, Seconds, или тот же Login, Password Еще Result очень сильный пример как обертка для значения
e

Eugen Martynov

10/31/2018, 10:10 AM
думаю, что временные юниты самое оно
не могу придумать пока
Result
применения
g

gildor

10/31/2018, 10:12 AM
почти бесплатная Try монада же
обертка для результата операции, которая в случае успешного результата не создает новых объектов
e

Eugen Martynov

10/31/2018, 11:12 AM
А есть пример Try с инлайн классом? Я просто не понимаю как обернуть операцию
g

gildor

10/31/2018, 12:23 PM
Result же и есть пример
runCatching в 1.3 что бы обернуть операцию
e

Eugen Martynov

10/31/2018, 2:35 PM
только что проверил
оке, тобто это замена sealed класса
g

gildor

10/31/2018, 3:10 PM
Ну можно и так сказать, просто как это противоречит тому что это замена Try?
e

Eugen Martynov

10/31/2018, 3:18 PM
Это не противоречие, а просто другая интерпретация
g

gildor

10/31/2018, 3:21 PM
почему? Try через Sealed классы в котлине всегда имплементят и функционально Result ему близок, хоть из коробки и flatMap нет inline классы пока не замена sealed в общем случае, только в специфичных, как тут
e

Eugen Martynov

10/31/2018, 3:28 PM
оке, я просто был не знаком с Тry, но Result класс мне знаком и близок
2 Views