@kotlin_lang

Страница 912 из 982
Жабра
04.10.2018
18:53:03
не знаю, но не выглядит как желаемый результат)
Вот весь код Map<ApiGroup, Set<ApiGet>> groupedMethods = methods.stream().collect(Collectors.groupingBy(apiDescriptions::getGroup, Collectors.toSet())); Map<ApiGroup, Set<ApiGet>> sortedGroupedMethods = new TreeMap<>(Comparator.comparingInt(ApiGroup::getOrder)); sortedGroupedMethods.putAll(groupedMethods);

Andrew
04.10.2018
18:53:49
methods.map { Pair(apiDescriptions.getGroup(it), setOf<ApiGet<*, *>>()) }.toMap() Так норм?
Если делать fancy, я бы написал .asSequence().map(apiDescriptors::getGroup).map { Pair(it, setOf<ApiGet<*, *>>()) }

Alexander
04.10.2018
18:54:05
Google
Жабра
04.10.2018
18:55:03
Это то, что переводится?
Это то, что было до перевода. :D

Жабра
04.10.2018
18:57:02
Beholder
04.10.2018
18:59:07
https://github.com/FXMisc/RichTextFX
там помнится, залазили в private методы через рефлексию и завязано на 8 Jdk

Andrew
04.10.2018
19:00:18
Дык эцсамое, methods.groupBy(ApiGroup::getGroup) как минимум для того, чтобы Map получить. А вот про TreeMap с компаратором надо подумать.

Andrew
04.10.2018
19:01:28
methods.groupByTo(TreeMap(Comparator.comparingInt(ApiGroup::getOrder)), ApiGroup::getGroup), что ли.

Жабра
04.10.2018
19:05:06
methods.groupByTo(TreeMap(Comparator.comparingInt(ApiGroup::getOrder)), ApiGroup::getGroup), что ли.
methods.groupByTo(TreeMap(Comparator.comparingInt(ApiGroup::order)), apiDescriptions::getGroup) выдаёт Type inference failed. Expected type mismatch: required: Map<ApiGroup, Set<ApiGet<*, *>>> found: MutableMap<in ApiGroup!, MutableList<ApiGet<*, *>>>

На мутабельность пофиг, главное MutableList -> Set

Igor
04.10.2018
19:09:52
Google
Жабра
04.10.2018
19:16:27
Точно, groupBy* же в качестве значений списки держит. Хмм.
В результате, вроде, вот methods .asSequence() .groupByTo(TreeMap(Comparator.comparingInt(ApiGroup::order)), apiDescriptions::getGroup) .map { Pair(it.key as ApiGroup, it.value.toSet()) } .toMap()

OlegKrikun
04.10.2018
19:16:51
Увадаемые, кто оседлал уже котлин дсл в грейделе, как сделать аналог вот такого подхода? subprojects { subproject -> afterEvaluate { if (subproject.plugins.hasPlugin('com.android.library')) { android { ... } dependencies { ... } } } }

Farid
04.10.2018
19:17:45
Привет всем. Извините за "наглость". Кто может скинуть видео, где коротко объяснят про button в android studio

И видео где объяснят хттп запросы

Пост, гет

Beholder
04.10.2018
19:18:14
Можно через имплиситы ?
а имплиситы в jvm как? :)

Andrew
04.10.2018
19:20:15
В результате, вроде, вот methods .asSequence() .groupByTo(TreeMap(Comparator.comparingInt(ApiGroup::order)), apiDescriptions::getGroup) .map { Pair(it.key as ApiGroup, it.value.toSet()) } .toMap()
Можно и так, но наверняка это шустрее будет работать через .groupingBy(apiDescriptions::getGroup).???, чтобы не гонять списки в сеты. Только я пока ??? не врубил, сам Grouping не использовал пока.

Igor
04.10.2018
19:20:53
а имплиситы в jvm как? :)
Я предполагаю - как дополнительный параметр в функцию, только опциональный. Если его не задавать явно, то компилятор возьмет подходящее значение из текущего скоупа.

Beholder
04.10.2018
19:21:54
тут думаешь как бы в this не запутаться, а то ещё имплиситы...

Andrew
04.10.2018
19:22:16
Но без входных типов Api* трудно коллекциями вертеть)

тут думаешь как бы в this не запутаться, а то ещё имплиситы...
Дык там имплиситы предлагаются ровно для неявных x во вложенных with(x) { ... }, то есть это развитие идеи путаницы с this :)

Жабра
04.10.2018
19:25:11
OlegKrikun
04.10.2018
19:32:55
да, не понятно как применить конфигурацию к плагину

Andrew
04.10.2018
19:34:58
Там вместо android { ... } придётся делать configure<com.android.build.gradle.LibraryExtension> { ... }, ЕМНИП

Жабра
04.10.2018
19:35:00
Как переписать это на котлин?) Enum[] enumConstants = (Enum[]) type.getEnumConstants(); Конвертируется вот так val enumConstants = type.enumConstants as Array<Enum<*>> Но говорит что есть ошибка No type arguments expected for class Array

Quantum Harmonizer
04.10.2018
19:35:01
OlegKrikun
04.10.2018
19:36:36
А проблема в том, что гредл ругается на android?
да и блок депенденси не понимает метод implementation()

Andrew
04.10.2018
19:36:43
Не получается такое
Я таки не могу в такое позднее время по обрывкам кода понять, что такое ApiGroup и как оно соотносится с остальным)

Google
Quantum Harmonizer
04.10.2018
19:36:58
Как переписать это на котлин?) Enum[] enumConstants = (Enum[]) type.getEnumConstants(); Конвертируется вот так val enumConstants = type.enumConstants as Array<Enum<*>> Но говорит что есть ошибка No type arguments expected for class Array
Вообще, тип Enum<*> в котлине невалиден (а сырых нет). Поэтому либо кастится к какому-нибудь конкретному Enum<Thread.State>, либо с @Suppress("UPPER_BOUND_VIOLATED"). (кстати, ахтунг, там рефлексия)

Andrew
04.10.2018
19:37:02
Andrew
04.10.2018
19:37:36
Да ничего, тот вариант норм.)
Ну окей, пусть так будет :)

OlegKrikun
04.10.2018
19:37:40
А если "implementation"(...)?
о_О а вот так кажется понимает

Quantum Harmonizer
04.10.2018
19:39:15
А если нет варианта выловить тип? Дженерик?
собственно, я расписал для ситуации, когда тип неизвестен

Andrew
04.10.2018
19:39:19
о_О а вот так кажется понимает
Как раз на котлинконфе сегодня рассказывал тип — когда речь идёт о NamedContainer, грувёвый DSL понимает, где вроде как идентификатор нужно превратить в getByName("idenifier"). Котлин не умеет вообще такие штуки с идентификаторами делать, но для его DSL добавили в контексте контейнера String.invoke(...) = getByName(this)(...)

OlegKrikun
04.10.2018
19:40:10
блин, но это же жесть =)

Andrew
04.10.2018
19:40:33
Дык в этом весь гредл, не?))))

На самом деле с переходом на Kotlin DSL гредл начинает чуть лучше доходить.

OlegKrikun
04.10.2018
19:40:58
не, это уже зашквар совсем =)

Andrew
04.10.2018
19:41:10
В грувёвом дсл ОЧЕНЬ много магии.

Quantum Harmonizer
04.10.2018
19:41:26
в этом весь груви)

OlegKrikun
04.10.2018
19:41:34
Жабра
04.10.2018
19:41:49
Andrew
04.10.2018
19:42:36
Хотя вон в @pofftop как раз бомбят по поводу Kotlin DSL и говорят, что груви был лаконичнее :D

Quantum Harmonizer
04.10.2018
19:44:13
Жабра
04.10.2018
19:44:42
А какой код?
В смысле?

Google
Quantum Harmonizer
04.10.2018
19:44:59
В смысле?
ну, чему аннотация не помогает? Какому коду?

Жабра
04.10.2018
19:46:16
ну, чему аннотация не помогает? Какому коду?
val enumConstants = type.enumConstants as Array<Enum<*>> Поставил аннотацию в начало метода - ничего. Засунул прям к массиву (@Suppress("UPPER_BOUND_VIOLATED") Array<Enum<*>>) (ну а мало ли) - всё равно ничего

Quantum Harmonizer
04.10.2018
19:47:24
ну, не считая unchecked

Жабра
04.10.2018
19:48:49
ну, не считая unchecked
А у меня до сих пор No type arguments expected for class Array ?

Quantum Harmonizer
04.10.2018
19:49:12
А у меня до сих пор No type arguments expected for class Array ?
так может реально такой класс попался? Что даёт Ctrl+клик?

Жабра
04.10.2018
19:50:00
Admin
ERROR: S client not available

Quantum Harmonizer
04.10.2018
19:51:48
вдруг есть какой-нибудт злостный class Array {}

Жабра
04.10.2018
19:53:01
вдруг есть какой-нибудт злостный class Array {}
package java.lang.reflect; /** * The {@code Array} class provides static methods to dynamically create and * access Java arrays. * * <p>{@code Array} permits widening conversions to occur during a get or set * operation, but throws an {@code IllegalArgumentException} if a narrowing * conversion would occur. * * @author Nakul Saraiya * @since 1.1 */ public final class Array

Andrew
04.10.2018
19:53:19
Ой-ой-ой

Жабра
04.10.2018
19:55:50
вот и ответ, заимпортировал из рефлекта, а нужен kotlin.Array
Окей.) А как тогда Array.newInstance(genericType as Class<*>, 0).javaClass переделать с рефлекта? (извините что спрашиваю каждую мелочь, хочется уже доделать и успокоиться)

Andrew
04.10.2018
19:56:37
Да никак, наверное, если ты от Class<*> пляшешь.

Жабра
04.10.2018
19:56:41
genericType: Type из рефлекта

Quantum Harmonizer
04.10.2018
19:56:44
Quantum Harmonizer
04.10.2018
19:57:52
А пример можно?)
import java.lang.reflect.Array as JArray || java.lang.reflect.Array.newInstance

Жабра
04.10.2018
19:59:09
Google
Denis
04.10.2018
20:05:30
Нужно для себя написать простое GUI-приложение под Android. Что лучше выбрать -- Java или Kotlin? Если разница вообще есть. На Jave писал 3-4 раза в жизни. Kotlin только читал. На первый взгляд кажется, что Kotlin очень схож с Java и знание последней всё равно нужно, поэтому для примитивной задачи лучше взять Java и не парится. Спасибо!

Denis
04.10.2018
20:17:55
А чем схож?
Узнаю русские комьюнити :D

Бери, что ближе)
Я один только "на картинках" видел) И второй, как я писал, 3 раза в жизни использовал. Мне никто из них не ближе)

Andrew
04.10.2018
20:19:08
Ну на реддите спрашивают что брать ктор или спринг, ответы схожи))

Andrew
04.10.2018
20:19:53
Всё просто: если стоит практическая задача написать приложение и забыть о ведре (и JVM) — бери то, на чём проще писать (вероятно, в твоём случае Java). Если хочется подучиться и время позволяет — бери технологии, которые будут актуальны в дальнейшем (Kotlin).

Denis
04.10.2018
20:20:17
Ну на реддите спрашивают что брать ктор или спринг, ответы схожи))
Так я допускаю, что ответ -- "без разницы", который я изначально тоже предположил, верный. Но лучше спросить у знающих людей, а не гадать)

Andrew
04.10.2018
20:21:16
В целом если и то, и то для тебя в новинку — вряд ли освоение Котлина сверху Джавы сильно тебя замедлит. БОльшая часть борьбы будет с ведровыми API, а не с языком.

Andrew
04.10.2018
20:23:21
Я о том, что всё равно придётся основные понятия джавки осваивать и сверху ещё накатывать "патчи" к ним для котлина.

Andrew
04.10.2018
20:26:41
Это да...но её понятия уже включены в котлин
Ну такое... Для того, чтобы понять, зачем нужны компаньоны и что такое object — полезно понимать, что такое static, чего в языке нету. С другой стороны, должно быть достаточно опыта в C# / C++, если таковой имеется.

Andrew
04.10.2018
20:30:34
?

Sergey
04.10.2018
20:32:51
круто)

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