@kotlin_lang

Страница 476 из 982
Kira
03.01.2018
21:24:08
На каком этапе и что не срабатывает - великая тайна есть

Возможно нужно скачивать сырцы и дебажить

Руслан
03.01.2018
21:31:54
ну да, все так. понаписывали динамического гумна на груви, а потом разобраться как это работает не получается

Boris
03.01.2018
21:59:48
ну да, все так. понаписывали динамического гумна на груви, а потом разобраться как это работает не получается
Не да, если бы это только проблема котлина была, так ведь и когда на груви пишешь ни черта не разберёшь

Google
Boris
03.01.2018
22:02:00
Я вот очень много на котлине написал под грейдл и скажу, что я ненавидел грейдл когда на нем надо было писать на груви, и прямо зауважал когда написал огромный билд на котлине

Даже не смотря на то, что легаси говноплагины приходится хачить

Kira
03.01.2018
22:02:49
Не да, если бы это только проблема котлина была, так ведь и когда на груви пишешь ни черта не разберёшь
Потому прислал снимок из идеи, которая вообще не понимает что я написал

Когда на груви из документации написал)

Ivan
04.01.2018
06:28:12
@fogone а ты встречал где-то мануалы по апгрейду gradle groovy dsl -> grale kotlin dsl для всяких легаси плагинов?

Alexander
04.01.2018
08:03:57
Я когда последний раз трогал было не очень, наверное докрутили уже

Boris
04.01.2018
08:09:47
А в чём разница? С груви не очень дружишь?
В том, что котлин-версия полностью типизирована и предоставляет вполне понятный апи, в отличии от груви, где апи это что-то иллюзорное. Хотя конечно и для груви можно было понятно сделать, но похоже почему-то считается, что билд это то место, где можно по-быстрому нафигачить и плагины в итоге часто превращаются в мессиво.

У меня вот целый дсл получился для настройки и кастомизации сборки, даже не хочу представлять как я бы это на груви делал

Alexander
04.01.2018
08:12:17
В паблике?

Boris
04.01.2018
08:13:15
Когда приходится из котлина иметь дело с такими вот говноплагинами без апи, то тяжко, в остальном все достаточно неплохо

Google
Boris
04.01.2018
08:13:25
В паблике?
Нет, это на работе

Alexander
04.01.2018
08:13:39
Что не очень?
Котлин для гредла, особенно смущала сильно распухший билд.градл

Boris
04.01.2018
08:14:23
Котлин для гредла, особенно смущала сильно распухший билд.градл
Мм, так там же все тоже самое, плюс минус пара строк

Alexander
04.01.2018
08:14:49
Ну я очень давно пробовал, но тогда прям сильно больше пары строк было

Надо будет чекнуть

Kira
04.01.2018
08:26:02
Видюшку скидывали постов двести назад

Sergey8827
04.01.2018
11:45:47


Обьясните что не так?

это конвертировало на котлин на яве все ок

Igor
04.01.2018
11:53:13
Какая-то старая проблема с тайп-инференсом (наверное) Просто укажи тип лямбды Observable.zip<Int, Int, Int, Int>(…, io.reactivex.functions.Function3 { integer, integer2, integer3 -> 0 })

Михаил
04.01.2018
11:55:14
Дак все верно. Лямбда возвращает Unit, а в дженерике указан Int

Igor
04.01.2018
12:31:09
Да не нужен он. Ради одной функции либу тащить, такая себе идея.

Sergey8827
04.01.2018
12:31:33
Да не нужен он. Ради одной функции либу тащить, такая себе идея.
в проекте должно быть как можно больше котлина

сарказм

Михаил
04.01.2018
12:36:01
там много полезного. а процентном соотношении

Igor
04.01.2018
12:38:33
ради одной?)
А что двух? Kotlin интероп уже не работает или руками написать “сахар” слишком сложно?

Михаил
04.01.2018
12:39:16
смысл писать то что уже написано)

Mi
04.01.2018
13:02:50
https://twitter.com/intelliyole/status/946796447122558978

Google
Mi
04.01.2018
13:02:57
тут наверное уже все в курсе, но всё же

наконец появились рекомендации по поводу названий файлов и структуры проекта

Жабра
04.01.2018
14:27:31
Напомните, пожалуйста, есть ли в Котлине вставка подмассива в массив в определённый диапазон? Вроде было подобное, но найти не могу.

Жабра
04.01.2018
14:32:43
О, да, спасибо.

Igor
04.01.2018
15:48:12
Ребят, а что в kotlin-script поменялось? Последняя версия не видит args, хотя раньше работало.

Странно, он просто теперь не любит ; - разнес на разные строки и все заработало.

Kira
04.01.2018
21:16:02
Пока что использование плагинов в Kotlin-DSL - изнасилование мозга, но зато видишь что вообще происходит: На груви: protobuf { generatedFilesBaseDir = "$projectDir/src/generated" protoc { artifact = "com.google.protobuf:protoc:3.5.0" } plugins { grpc { artifact = 'io.grpc:protoc-gen-grpc-java:1.8.0' } } generateProtoTasks { all()*.plugins { grpc {} } } } На котлине: configure<ProtobufConvention> { protobuf(closureOf<ProtobufConfigurator> { generatedFilesBaseDir = "$projectDir/src/generated" protoc(closureOf<ExecutableLocator> { artifact = "com.google.protobuf:protoc:3.5.0" }) plugins(closureOf<NamedDomainObjectContainer<ExecutableLocator>> { create("grpc", closureOf<ExecutableLocator> { artifact = "io.grpc:protoc-gen-grpc-java:1.8.0" }) }) generateProtoTasks(closureOf<ProtobufConfigurator.JavaGenerateProtoTaskCollection> { all().forEach { t: GenerateProtoTask? -> t?.plugins(closureOf<NamedDomainObjectContainer<GenerateProtoTask.PluginOptions>> { add(create("grpc")) }) } }) }) }

Относительно разобрался с плагином protobuf, осталось разобраться с плагином java) Кто-нибудь знает как написать на котлине: sourceSets { main { java { srcDirs = ['src/generated/main/grpc', 'src/generated/main/java'] } proto { srcDir 'proto' } } } ? Моя последняя нерабочая идея: configure<JavaPluginConvention> { sourceCompatibility = JavaVersion.VERSION_1_8 sourceSets(delegateClosureOf<NamedDomainObjectContainer<SourceSet» { getByName("main", delegateClosureOf<SourceSet> { create("proto", closureOf<SourceSet> { allSource.srcDir("proto") }) }) }) }

Kira
04.01.2018
21:23:32
Адок конечно на котлине ? (но виноват наверное плагин)
Ага, та еще жесть.. Я надеюсь в java плагине получше, но вот застрял

Boris
04.01.2018
21:37:24
Гист же

Kira
04.01.2018
21:39:22
Pavel
04.01.2018
21:39:48
А мне вот кажется или String template как-то проигрывает по читаемости String.format?

Igor
04.01.2018
21:40:32
Пример?

Pavel
04.01.2018
21:41:45




Aleksey
04.01.2018
21:42:22
Ребят, где можно за структуру БД потрындеть? ?

Google
Руслан
04.01.2018
21:43:53
вот отсюда https://kotlinlang.slackarchive.io/gradle/search-sourceSets/page-1

Admin
ERROR: S client not available

Quantum Harmonizer
04.01.2018
21:46:05
Вполне может вернуть null null (null).

Igor
04.01.2018
21:46:05
Конкретно в этом случае скорее проигрывает. Да и вообще выражения (вызовы функций) в {} фигово смотрятся.

Quantum Harmonizer
04.01.2018
21:46:36
Pavel
04.01.2018
21:47:24
Вполне может вернуть null null (null).
1. Не может 2. Вопрос не об этом ;)

Aleksey
04.01.2018
21:47:53
Спасибо

И еще раз спасибо ?

Kira
04.01.2018
22:02:17
вот отсюда https://kotlinlang.slackarchive.io/gradle/search-sourceSets/page-1
Пока что использовать не выходит, так как "Could not find any convention object of type ProtobufSourceDirectorySet" Копаю снова что там запрятано в плагине

Руслан
04.01.2018
22:02:42
Ну тогда чтобы не мучаться лучше адресовать туда вопрос

Kira
04.01.2018
22:33:18
? написал им issue, забодало

Dmitriy
05.01.2018
03:15:12
Есть оператор with. with(obj) {...

Но от ${getString(..} не спасет

Alexandr
05.01.2018
06:10:37
Привет народ. Подскажите плиз как запустить корутину чтобы не блокировать основной процесс и при этом возвращалось определенное значение???

Await() вне блока корутину не работает, это если использовать async вместо runblocking

whalemare
05.01.2018
06:26:45
Привет народ. Подскажите плиз как запустить корутину чтобы не блокировать основной процесс и при этом возвращалось определенное значение???
Можно сделать, чтобы оно не возвращалось, а вызывало функцию, передавая туда аргумент который посчитало. Так достаточно просто реализуется

Alexandr
05.01.2018
06:28:46
Можно сделать, чтобы оно не возвращалось, а вызывало функцию, передавая туда аргумент который посчитало. Так достаточно просто реализуется
В принципе да, но я сделал универсальную функцию, которая получает мне нужное значение из базы и везде буду ее вызывать...

whalemare
05.01.2018
06:30:27
В принципе да, но я сделал универсальную функцию, которая получает мне нужное значение из базы и везде буду ее вызывать...
ну в твоем случае тоже работает) пседокодец: launch(IO){ val value = getFromDatabase() launch(UI) { getView().showValue(value) } }

Alexandr
05.01.2018
06:34:53
ну в твоем случае тоже работает) пседокодец: launch(IO){ val value = getFromDatabase() launch(UI) { getView().showValue(value) } }
А launch(UI) разве не вызовется до того как получится значение?? Ведь получение у меня происходит через async? Может я изначально неправильно поставил задачу, мне нужно в момент получения данных из БД на экране отобразить ожидание...

Google
whalemare
05.01.2018
06:35:37
getfromDatabase это твоя суспенд функция

И весь код внутри лаунчИО и лаунсЮИ будет последователен

Alexandr
05.01.2018
06:45:13
Santa
05.01.2018
10:51:54
Если в Intelij указать неизвестный класс, после через Alt+Enter попытаться его создать, в Java он выводил окно с указанием пакета, где будет создан класс, как то же самое сделать в Kotlin(Intelij выводит на выбор только текущий класс или файл)?

Santa
05.01.2018
10:55:03
Thanks(

Dmitry
05.01.2018
11:52:02
У компилятора есть класс ReplCodeLine, у которого есть generation. Где искать, что он означает? Джавадоков в компиляторе нет...

Я пытаюсь завести jupyter, который был написан под альфу котлина, где генерации небыло.

Vladimir
05.01.2018
11:54:31
Что одно не очень, что другое. Не лучше ли вызовы getString вынести в отдельные переменные?

Pavel
05.01.2018
11:56:08
зачем?

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