
Nick Senchurin
12.10.2017
11:54:20
скажите, а с дагером на котлине сейчас все ок?
а то периодически слышу что капт ведет себя как плохиш и блаблабла

Михаил
12.10.2017
12:06:08
Это щас больше всего угнетает

Google

Igor
12.10.2017
12:47:53
Существуют ли какие-нибудь тулы или просто бестпрактикс, как превратить java-билдеры в Kotlin DSL?
Может у кого опыт есть и может поделится “подводными камнями”?

Boris
12.10.2017
12:49:59

Igor
12.10.2017
12:50:57
Большая библиотека вот такой ерунды https://i.gyazo.com/b21fab48626739f96b9a53c126de4697.png

? animufag ?
12.10.2017
12:51:06

Boris
12.10.2017
12:52:34
Часто достаточно только билдер-метод который принимает эксеншфункцию в параметр и возвращает уже результат

Igor
12.10.2017
12:54:02
хочешь сделать обёрток для этого своего лито?
Да и только потому что там для всех билдеров требуется ComponentContext, а хочется отвязаться от него.
Ведь это мешает делать как React/Elm “чистые” функции вида (Props/Model)->Component

Boris
12.10.2017
12:55:27

? animufag ?
12.10.2017
12:56:33
ну полностью конечно не отвяжешься, просто сделаешь как в анко, что экстеншен функции которые вызываются над некоторым контекстом который содержит нужные неявные параметры

Igor
12.10.2017
13:01:38
Можно конечно обойтись малой кровью с
typealias Contextual<T> = (ComponentContext) -> T
fun <T> contextual(f: ComponentContext.() -> T): Contextual<T> = { it.f() }
но потом начинаются проблемы композицией

Boris
12.10.2017
13:13:34
билдер создает функцию, которая создает компонент, если ей дать контекст
типа такого https://gist.github.com/anonymous/25c1229c13a4a1ec9c9c46820e7ff97f

Igor
12.10.2017
13:36:14
Да отлично, осталось только разобраться как написать генератор этого добра,
ибо руками все это сделать и поддерживать - лучше сразу застрелиться.

Google

Boris
12.10.2017
13:41:17
в основном билдер-функции
хотя я эту либу не видел, возможно там так и не получится

Igor
12.10.2017
14:17:47

Boris
12.10.2017
14:31:31

Igor
12.10.2017
14:46:43
Что-то у меня не сходится https://gist.github.com/anonymous/dd3fab302f94b1a4515b886c15330604

Quantum Harmonizer
12.10.2017
14:54:44

Igor
12.10.2017
14:57:03
Не совсем понял ты про childFunction или просто про child?

Quantum Harmonizer
12.10.2017
15:10:07

Саша
12.10.2017
15:42:58
Ребят, есть идеи, как можно из листа оставить только дубликаты,которые повторялись хотя бы й раз ?
Типа так:
это -> лист(1, 1, 1, 2, 3, 3, 4, 5, 5, 6, 7, 7, 7, 8, 9, 9)
сделать этим -> (1, 3, 5, 7, 9)

Igor
12.10.2017
15:43:58
groupBy => filter => map

Саша
12.10.2017
15:45:01

Pavel ?
12.10.2017
15:45:39
Типа так:
это -> лист(1, 1, 1, 2, 3, 3, 4, 5, 5, 6, 7, 7, 7, 8, 9, 9)
сделать этим -> (1, 3, 5, 7, 9)
distinct

Quantum Harmonizer
12.10.2017
15:46:39

Pavel ?
12.10.2017
15:47:12

Quantum Harmonizer
12.10.2017
15:47:32

Igor
12.10.2017
15:49:28

Alexander
12.10.2017
15:49:41
Кто подскажет, Anko это норм тема? Стоит изучить и перейти? Уж слишком графики типа "400% faster then XML" привлекают

Igor
12.10.2017
15:50:20
… inflating ?

Google

? animufag ?
12.10.2017
15:52:39

balolam
12.10.2017
15:53:08

? animufag ?
12.10.2017
15:53:08
в общем я думаю что мне потом скажут что это было неправильное решение тянуть анко

balolam
12.10.2017
15:55:59
Все так отзываются о Anko, как буд-то это единственный способ делать вьюхи кодом)

Boris
12.10.2017
15:57:53
господа, подскажите, а есть ли нормальное решение для такого случая:
list.map { it to someNullable(it) }.filter { it.second != null }.map { it as Pair<NonNull, NonNull2> }
т.е. можно ли избавиться здесь от анчекедтайпкаста?

Quantum Harmonizer
12.10.2017
15:59:08

Sergey
12.10.2017
15:59:16
!! в мапе сделать)

Quantum Harmonizer
12.10.2017
15:59:20

Boris
12.10.2017
15:59:41

Sergey
12.10.2017
16:00:00

Boris
12.10.2017
16:00:13
вот просто совсем не могу придумать как обойти довольно простой вроде кейз и распространенный
разве?
конечно нет, он же просто свалится на нуле

? animufag ?
12.10.2017
16:00:36

Sergey
12.10.2017
16:00:46

Boris
12.10.2017
16:01:22
после фильтра?
мм, я наверное не понимаю, что ты имеешь ввиду, можешь кусок кода привести?

? animufag ?
12.10.2017
16:01:58
eee

Boris
12.10.2017
16:01:58
супер, спасибо

Google

Sergey
12.10.2017
16:03:19

Михаил
12.10.2017
16:07:24
кто-нить юзал @Parselize из андроид экстеншена? как оно работает в плане стабильности?

? animufag ?
12.10.2017
16:09:19
ну то есть я на сериализацию/десерилизацию не пишу тесты

Vic
12.10.2017
16:10:15
Как идиоматически написать на котлине аналог скаловского collect(f: PartialFunction[A, B]) ??
В голову приходит map в Optional, затем filter по isPresent и map в get(). Но как-то слишком многословно.
Ой, слона-то я и не заметил. Вот же - mapNotNull

? animufag ?
12.10.2017
16:12:03
дада
я правда совсем не понял
то есть то что это partialFunction - вообще всё равно.
так что collect :: a -> b
и что дальше? что с такой сигнатурой можно сделать

Vic
12.10.2017
16:13:37
Ты про скалу?

? animufag ?
12.10.2017
16:14:21
и интуицию под словом коллект тоже не понимаю. оно распространяется ещё на какие-нибудь типы или только на списки?

Vic
12.10.2017
16:15:36
В скале он думаю от самого траверсабл наследуется. Смысл его такой же как у котлинского мапНотНул. Что можем смапить - берем, остальное выкидываем
Удобно для парсинга
Когда не надо кидать ошибки, а можно пропустить невалидные данные
Ищешь только то что подходит, остальное нафиг. Это лучше чем филтер-мап

? animufag ?
12.10.2017
16:18:03
а разве это не флатмап где функция возвращает опшонал?
или стандартная библиотека скалы не дружит с флатмапами?

Vic
12.10.2017
16:20:02
В скале флатмап везде, но зачем опшион, если есть сразу ПаршлФанкшн и синтаксическая поддержка на кейсах

Google

? animufag ?
12.10.2017
16:20:28
ааа

Vic
12.10.2017
16:20:39
Короче код получается

? animufag ?
12.10.2017
16:20:49
партиал в смысле нетотальная. я думал тип карируемая

Boris
12.10.2017
16:24:46

Vic
12.10.2017
16:25:14
PartialFunction не путать с partially applied fucntion ?

Boris
12.10.2017
16:27:42

Vic
12.10.2017
16:31:50
Все верно, я вижу отличие. экстеншен mapNotNull тут самый подходящий.
Хотя конечно расстраивает то, что вместо опшиона приходится использовать богомерзкий нулл.
Если бы жабовский опшионал или опшион из funktioale имплементили интерфейс итерабл, то нормально бы работал флатМап