@kotlin_lang

Страница 369 из 982
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? Может у кого опыт есть и может поделится “подводными камнями”?

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

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
типа такого https://gist.github.com/anonymous/25c1229c13a4a1ec9c9c46820e7ff97f
Кажись врубился, но что если я решил “декомпозировать” и вынес часть UI верстки в др функцию и хочу ее через child подцепить к Column. Можешь привести пример как это будет в этих билдерах?

Boris
12.10.2017
14:31:31
Кажись врубился, но что если я решил “декомпозировать” и вынес часть UI верстки в др функцию и хочу ее через child подцепить к Column. Можешь привести пример как это будет в этих билдерах?
Это не сложно, я ща с телефона пример внятно привезти не могу, но смысл в том, чтобы в одном месте объявить такую билдерлямбду, а в другом просто его вызвать

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

Quantum Harmonizer
12.10.2017
14:54:44
Что-то у меня не сходится https://gist.github.com/anonymous/dd3fab302f94b1a4515b886c15330604
функция должна быть extension-функцией к контексту, в котором её вызывают

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

Саша
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
groupBy => filter => map
Можешь немного подробнее? Плз

Quantum Harmonizer
12.10.2017
15:46:39
distinct
наоборот

Pavel ?
12.10.2017
15:47:12
наоборот
что наоборот

Quantum Harmonizer
12.10.2017
15:47:32
что наоборот
вопрос прочитай

Igor
12.10.2017
15:49:28
Можешь немного подробнее? Плз
Ну это такое решение в лоб listOf(1, 1, 1, 2, 3).groupBy { it }.filter { it.value.size > 3 }.map { it.key }

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
Кто подскажет, Anko это норм тема? Стоит изучить и перейти? Уж слишком графики типа "400% faster then XML" привлекают
нет на это не ведись. вообще на перфоманс никогда не ведись. меня привлекало переиспользование вьюх, возможность написания своих экстеншенов. ну и вообще не люблю xml в итоге норм, но нет норм решения для адаптеров и в целом анко слабо поддерживается

balolam
12.10.2017
15:53:08
Ну это такое решение в лоб listOf(1, 1, 1, 2, 3).groupBy { it }.filter { it.value.size > 3 }.map { it.key }
А можно и добавить все в сет, вычесть из исходной коллекцией и фильтрануть после дубликаты.

? 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> }

т.е. можно ли избавиться здесь от анчекедтайпкаста?

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

Boris
12.10.2017
15:59:41
Sergey
12.10.2017
16:00:00
Boris
12.10.2017
16:00:13
вот просто совсем не могу придумать как обойти довольно простой вроде кейз и распространенный

разве?
конечно нет, он же просто свалится на нуле

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

? animufag ?
12.10.2017
16:09:19
кто-нить юзал @Parselize из андроид экстеншена? как оно работает в плане стабильности?
меня только ворнинги напрягали. как их качественно проверить - хз

ну то есть я на сериализацию/десерилизацию не пишу тесты

Vic
12.10.2017
16:10:15
list.mapNotNull { a -> someNullable(a)?.let { a to it } }
Буквально пару дней назад то же самое спрочил и ответ написал )

Как идиоматически написать на котлине аналог скаловского 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
filter { it.second != null }.map {(key, value) key to value!! }
Ну, это от анчекедкаста не очень отличается

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

Boris
12.10.2017
16:27:42
Ой, слона-то я и не заметил. Вот же - mapNotNull
Не, проблема в том, что нал внутри пары, поэтому этот метод так просто не работает, а нужно сделать приседание как предложил ? animufag ?

Vic
12.10.2017
16:31:50
Все верно, я вижу отличие. экстеншен mapNotNull тут самый подходящий.

Хотя конечно расстраивает то, что вместо опшиона приходится использовать богомерзкий нулл.

Если бы жабовский опшионал или опшион из funktioale имплементили интерфейс итерабл, то нормально бы работал флатМап

Страница 369 из 982