
Sergey
03.09.2018
06:33:22
this

OlegKrikun
03.09.2018
06:36:02

Sergey
03.09.2018
06:36:53
спасибо, дома попробую, сейчас я за полноценным ПК

Dmitry
03.09.2018
07:53:38

Google

Andrew
03.09.2018
07:54:46
Товарищи, @pofftop, если можно.

Maxim
03.09.2018
07:55:13
Интересная, кстати, штука. На разных машинах с разным количеством ОЗУ есть оптимальный объем, который надо выделять с помощью org.gradle.jvmargs. Слишком много замедляет сборку проекта, слишком мало тоже. Надо поэкперементировать по этому поводу.

Konstantine
03.09.2018
08:00:26

Evgeny
03.09.2018
08:02:04

Konstantine
03.09.2018
08:02:50

Evgeny
03.09.2018
08:03:39

Vladimir
03.09.2018
08:03:46

Evgeny
03.09.2018
08:03:50
раньше эти примеры не работали

Konstantine
03.09.2018
08:05:19

Evgeny
03.09.2018
08:07:44

Konstantine
03.09.2018
08:09:26

Igor
03.09.2018
08:19:05
Кстати, что-то же подобное (я про контракты) через анотации же делают?
Где то я такое, видел в коде андроид ли что ли.

Google

Ivan
03.09.2018
08:45:04
а насколько обратно-совместимо снять inline модификатор с функции?

OlegKrikun
03.09.2018
08:56:46

dimiii
03.09.2018
09:55:43
Опечатка: reified.
А то я испугался, полез проверять, что за очередное ключевое слово притащили.

OlegKrikun
03.09.2018
10:03:02
Сорян, это всё жара

Quantum Harmonizer
03.09.2018
10:06:54

Konstantin
03.09.2018
11:08:25
натолкните на мысль как элегантно сделать апдейт дата класса другим экземпляром?
по компонентам в цикле пройтись?

Quantum Harmonizer
03.09.2018
11:09:04
а, хотя, блин

dimiii
03.09.2018
11:14:29

Konstantin
03.09.2018
11:15:17
https://gist.github.com/josdejong/fbb43ae33fcdd922040dac4ffc31aeaf
что насчет такого?

Quantum Harmonizer
03.09.2018
11:16:39
ой, а что, можно было говнокодить?

Konstantin
03.09.2018
11:16:58
в чем говнокод
решение кстати не мое, нашел на обочине

Quantum Harmonizer
03.09.2018
11:18:14

jied
03.09.2018
11:22:52
у дата класса же есть copy

Nikita
03.09.2018
11:23:11

Quantum Harmonizer
03.09.2018
11:23:33

Nikita
03.09.2018
11:23:34
два экземпляра одного класса?

Google

Nikita
03.09.2018
11:23:40
дак тогда да copy
самый простой вариант
и правильный по сути)

Igor
03.09.2018
11:24:28

dimiii
03.09.2018
11:25:46
Покажешь пример ?
Что-то я сомневаюсь, что у меня получится - запостил в шутку, но потом заморочился и по-ходу шизо-код получается.

Nikita
03.09.2018
11:27:56
если ему целиком экземпляр подменить
другая проблема если есть идентификатор и его менять нельзя тогда надо надо апдейтер писать
тут два пути через рефлекшен в статик контексте создать мапу для апдейта и содержащий его апдейт сервис, чтобы не нулить не обьявленые в присваевомой дто поля и пропускать ключевые
или делегат апдейтеры

Konstantin
03.09.2018
11:30:47
мне надо сделать ровно то что в комменте в гисте - мерж между двумя экземплярами одного дата класса чтобы нулы не брались

Andrey
03.09.2018
11:31:14

Andrey
03.09.2018
11:33:09

Konstantin
03.09.2018
11:33:17

Ilya
03.09.2018
11:33:53
Помогите с такой задачей: Есть HashMap<Int, List<Obj», мне надо сделать новый HashMap, при этом надо удалить из исходной мапы из всех листов элементы с некотороым условием. Как это сделать?
пытался так it.filter {
it.value.any {
it.eventType != "holiday"
}
} as HashMap<Int, List<EventItem»
но не получилось

dimiii
03.09.2018
11:34:21

Konstantin
03.09.2018
11:34:24

Igor
03.09.2018
11:35:39

Andrey
03.09.2018
11:36:56

Google

dimiii
03.09.2018
11:39:25

Igor
03.09.2018
11:39:54

Konstantin
03.09.2018
11:40:37

Andrey
03.09.2018
11:40:46

Admin
ERROR: S client not available

dimiii
03.09.2018
11:41:13

Andrey
03.09.2018
11:41:51
да
Это надо решать общим методом для произвольных data классов?

Igor
03.09.2018
11:42:06

Konstantin
03.09.2018
11:42:42

Igor
03.09.2018
11:43:31
Чуть-чуть подпpавил код для удобства, добавил пpимеp. ИМХО, весьма пpиятно.

dimiii
03.09.2018
11:45:54

Andrey
03.09.2018
11:47:00
линалом же :)
Ну если уж совсем точно, то общей алгеброй. Полугруммы к линейности мало отношения имеют

Igor
03.09.2018
11:47:23

Andrey
03.09.2018
11:52:00

Konstantin
03.09.2018
11:52:47
принято, спасибо

Max
03.09.2018
12:02:07
Всем привет. Возможно ли, получить subList из ArrayList, при этом конвертировать полученный список к типу ArrayList (из MutableList)?

Quantum Harmonizer
03.09.2018
12:02:44
или aList.subList(...).toMutableList()

Max
03.09.2018
12:05:39
То что нужно. Спасибо!


Andrey
03.09.2018
12:58:08
принято, спасибо
Примерно вот так для случая, когда у дата класса 1 конструктор, в котором просто инициализируются все поля, нет параметров, кроме полей, и не переопределены/доопределены componentN методы:
import kotlin.reflect.KFunction
import kotlin.reflect.KParameter
import kotlin.reflect.full.functions
fun main(args: Array<String>) {
val foo = Foo(null, null)
println(foo)
val foo1 = foo updateWith Foo("foo", null)
println(foo1)
val foo2 = foo1 updateWith Foo("baz", "bar")
println(foo2)
}
data class Foo(val foo: String?, val bar: String?)
private const val componentPrefix = "component"
private const val componentPrefixLength = componentPrefix.length
infix fun <A : Any> A.updateWith(oldObj: A): A {
val aClass = this::class
assert(aClass.isData) { "Receiver should be instance of data class" }
assert(aClass == oldObj::class) { "Receiver and old object should be instances of the same class" }
val constructors = aClass.constructors
assert(constructors.size == 1) { "Receiver's class should have one constructor only" }
val constructor: KFunction<A> = constructors.first()
val parameters = constructor.parameters
val componentFunctionsByIdx = aClass.functions
.filter { it.name.matches(("^$componentPrefix[0-9]*$").toRegex()) }
.map { it.name.substring(componentPrefixLength).toInt() to it }
.toMap()
assert(parameters.size == componentFunctionsByIdx.size) { "All constructor parameters should be bound to data class components" }
val params: Map<KParameter, Any?> = (0 until parameters.size)
.map {
val componentGetter = componentFunctionsByIdx[it + 1]!!
parameters[it] to (componentGetter.call(this) ?: componentGetter.call(oldObj))
}
.toMap()
return constructor.callBy(params)
}

Google

Konstantin
03.09.2018
13:01:35
вот это да, спасибо, проверю на досуге )

Alexey
03.09.2018
13:03:05
ухххх, надеюсь это не будет пользоваться часто

Nikita
03.09.2018
13:04:10
aClass.functions - а это типа не через рефлекшен?

Alexey
03.09.2018
13:04:30
Конечно через рефлексию

Nikita
03.09.2018
13:05:08
дак надо было тогда мапу статик аймютабл делать
иначе боль

Alexey
03.09.2018
13:05:46
Я всё офигиваю, в чем проблема такой апдейтер написать руками?
Как будто для 1000 типов эта функция нужна
Если да, то лучше посмотерть в сторону кодогенерации

Andrey
03.09.2018
13:06:29

Alexey
03.09.2018
13:07:43
Ну вообще обычно во всяких рефлекшен утилс делается static ConcurentHashMap

Andrey
03.09.2018
13:08:41

Alexey
03.09.2018
13:09:17
Ну в данном случае да, и конструктор еще

Andrey
03.09.2018
13:09:59