Dmitry
26.10.2017
12:51:49
Quantum Harmonizer
26.10.2017
12:52:05
Anton
26.10.2017
12:52:07
Vitalii
26.10.2017
12:52:21
какой профит от этого получится?
См. разделение на Android, JVM и Android Architecture.
Разделение иметь смысл может. Просто не в этом случае (по крайней мере пока).
Google
Vitalii
26.10.2017
12:52:59
Руслан
26.10.2017
12:52:59
Anton
26.10.2017
12:53:01
разделение андроид ру от архитектуры дало профит что более менее опытные разрабы собрались в арх чате
Quantum Harmonizer
26.10.2017
12:53:36
Vitalii
26.10.2017
12:54:18
большинство конфигов прогарда для андроида — андроид-специфичны
Большинство != все [2]
Полагаю, что корутины можно использовать с JavaFX.
Я понял мысль, и в данном случае как раз был Android вопрос, но он как раз не из тех, которые можно назвать строго Android-вопросами, ибо ответ может быть применим к другим платформам (частично или полностью).
Alexander
26.10.2017
13:07:25
Чет не могу нагуглить ответ на вопрос, как в Kotlin указать generic тип с массивом внутри, в rxJava2 есть Consumer<Object[]> в Kotlin это Consumer<Any и тут что указать> ?
Лёша
26.10.2017
13:10:40
Илья
26.10.2017
13:11:20
Consumer<Array<Any>> по идее
Alexander
26.10.2017
13:11:28
точно же спасибо
DarkMentat
26.10.2017
13:16:42
да и не ужели вам не интересно почитать обсуждение немного платформо-специфичный воспросов?
вот я люблю и про котлинJs послушать, и про бекенд
хоть ни то, ни то не шарю
Anton
26.10.2017
13:30:44
все холивар утих уже
Google
Anton
26.10.2017
13:30:50
ты опоздал
DarkMentat
26.10.2017
13:37:01
видимо да
или ушел в другой чатик
еще один
@kotlin_chat_holywar
Gor
26.10.2017
14:11:51
в студии или идее есть генератор для котлиновских билдеров?
Ivan
26.10.2017
14:12:15
котлиновские билдеры?
Gor
26.10.2017
14:12:36
агамс, та любой на самом деле
дефолтная тулза Replace constructor with builder не срабатывает
Ivan
26.10.2017
14:13:19
давайте начнем с вопроса, зачем в котлине билдеры если есть дефолт значения + именованные параметры?
Gor
26.10.2017
14:13:39
плохой вопрос
именнованые параметры совсем не то
Ivan
26.10.2017
14:15:05
разве?
.withMyParam(param) - java
myParam = param - kotlin
Gor
26.10.2017
14:15:36
дефолтные значения подразумевают что объект будет создан сразу
мне же нужно промежуточное состояние где часть полей уже засетилась но объект еще не цельный
что и дает билдер
Руслан
26.10.2017
14:16:27
Можно делать для этого немутабельный интерфейс + мутабльный класс
Ivan
26.10.2017
14:16:42
давайте поможем вам зарефакторить код? ?
собираете нужные данные и создаете иммутабельный объект вместо создания билдера и передачи его в 100500 мест
Gor
26.10.2017
14:17:26
а что плохого в билдере?
Google
Руслан
26.10.2017
14:18:17
Наследование и билдеры это ад
Gor
26.10.2017
14:18:25
Yevhen
26.10.2017
14:18:48
Ivan
26.10.2017
14:18:57
билдеры в котлине нужны примерно так же как и ;
но если вам хочется свой островок мутабельности,то никто не запрещает написать класс на джаве,сделать для него билдер и конвертнуть в котлин ?
Gor
26.10.2017
14:20:01
а наследование просто ограничивает, но опять же, для решения задач подходит
сам концепт билдера позволяет строить объект исходя из каких-то сторонних параметров, делать мутабельный класс и оборачивать в иммутабельный интерфейс, это разве не костыль в этом случае?
Anton
26.10.2017
14:21:48
потому что есть дефолтные параметры
билдер нужны только если интероп с джавой
Алексей
26.10.2017
14:22:07
а что плохого в билдере?
если я правильно понял ваш кейс то минус будет в мутабельности объекта. т.е
Hren.Builder builder = Hren.newBuilder();
Hren hren = builder
.setParam("one")
.build();
assert hren.getParam().equals("one"); // true
builder.setParam("two");
assert hren.getParam().equals("one"); // false
Ivan
26.10.2017
14:22:09
язык в отличии от джавы форсит иммутабельность и дефолтный значения и прочие хорошие штуки
Руслан
26.10.2017
14:22:19
Ну не то чтобы я адепт наследования, я скорее противник. Но когда мне пришлось в типовом джава проекте прикрутить билдеры и при этом классы могли наследоваться - было больно. Во-вторых билдеры это бойлерплейт которого я как раз и не люблю в джаве, дублировать ради дублирования. Посмотри все же на подход интерфейс иммутабл + мутабл класс
Dmitry
26.10.2017
14:22:20
Gor
26.10.2017
14:23:01
Anton
26.10.2017
14:23:39
ну делай их нулами
Ivan
26.10.2017
14:23:48
а билдер чем тут поможет?)
и как валидация связана с билдером то?
Vic
26.10.2017
14:24:05
А еще синтаксически билдеры менее удобны чем ДСЛ
Google
Anton
26.10.2017
14:24:17
билдеры вообще отстой
Ivan
26.10.2017
14:24:32
набросились ?
Gor
26.10.2017
14:25:12
Anton
26.10.2017
14:25:24
да ты сам странный кейс какой то сказал
что дефолтные значения какие то невалидные
Gor
26.10.2017
14:25:44
ладно, поподробнее опишу, может смотрю куда-то не туда
Anton
26.10.2017
14:25:46
как это билдером решать?
Gor
26.10.2017
14:30:58
есть к примеру 10-15 полей для инпута(количество имеет значение так как оперировать таким количеством аргументов не слишком удобно)
я собираю их в виде строк и помещаю в одну модель, которую передаю на слой валидации
теперь собственно кейс, из этой модели с непонятными строками мне нужно создавать валидный обжект либо кидать ексепшн.
я вижу это так, создаеться билдер для валидного объекта, в который помещаются данные в процессе валидации и конвертации каждого поля, по окончанию, если валидация была успешной я из билдера создаю валидный объект, который будет имутабельным и имеет все валидные поля.
возможно не самое прямое решение на уровне валидации, но пока остановился на этом
Ivan
26.10.2017
14:32:17
а нельзя просто прогнать валидатором по нужным филдам и в случае чего кинуть эксепшн,в случае если все ок вернуть обьект
ну типо интерфейс валидатор,куча имлементаций + композитный
Gor
26.10.2017
14:33:17
Ivan
26.10.2017
14:34:10
Gor
26.10.2017
14:34:58
Ivan
26.10.2017
14:37:02
а очень хорошо упарываться по типам
Igor
26.10.2017
14:38:04
А это как? Either?
Руслан
26.10.2017
14:39:04
И не нужны билдеры при таком подходе
Gor
26.10.2017
14:40:03
Google
Руслан
26.10.2017
14:40:36
Ну смотря как ты валидацию делаешь
Gor
26.10.2017
14:41:02
Ivan
26.10.2017
14:42:52
А это как? Either?
можно так,а можно sealed класс в двумя/n дата классами внутри, каждый описывает кейс какой-то,например: валидный объект, невалидное имя, невалидный пароль и тд
Gor
26.10.2017
14:43:24
Ну смотря как ты валидацию делаешь
сейчас поочередно проверяется каждое поле, т.е. после валидации первого поля у меня будет создан объект с 1 валидным полем и 14 дефолтными с таким подходом
Руслан
26.10.2017
14:44:13
Ладно, положил на стек, буду за компом покажу что я имею ввиду
Ivan
26.10.2017
14:44:42
Gor
26.10.2017
14:45:02
т.е. билдер выступает холдером уже сконвертированных данных
Igor
26.10.2017
14:48:39
Ivan
26.10.2017
14:49:42
ну тут все зависит от того что с ним делать дальше,если вы в дальнейшем будете парсить ошибку и разбираться что конкретно сломалось,то вариант с sealed классами выглядит весьма ничего
если вам просто важно либо Success,либо Failure,то и Either зайдет со своим left,right
Ivan
26.10.2017
14:53:59
Gor
26.10.2017
14:56:25
Руслан
26.10.2017
16:03:27
ну и наверно лучше всего validate метод прикрутить к DefaultParsedValues (или даже лучше к ParsedValues), который проверит целостность объекта.
Что думаешь?
No1
26.10.2017
17:15:24
как котлин?:) хорош?)
You
26.10.2017
17:16:18
Да
Anton
26.10.2017
17:16:26
с пивком пойдет