
Andrey
18.09.2018
16:35:03
и в этом тоже
спасибо )
Ну вообще я бы не советовал делать подобные циклы по ссылкам. Это может привести к внезапной бесконечной рекурсии.
Например:
class A(bRef: () -> B) {
val b: B by lazy(bRef)
override fun toString(): String = "A(b=$b)"
}
class B(val a: A) {
override fun toString(): String = "B(a=$a)"
}
Теперь попытка вызвать toString у любого из объектов типа A или B приведёт к StackOverflowError, так как A.toString содержит шаблон, в котором неявно вызывается B.toString, который содержит шаблон, в котором неявно вызывается A.toString ...
При этом IDE вам не подскажет, что у вас тут рекурсия, так как IDE не умеют находить взаимную неявную рекурсию.
И если код будет сильно больше, мест где такое может произойти тоже увеличится, а находить их станет сложнее.

Alexander
18.09.2018
16:43:14
Это только у меня, или serialization плагин стабильно ломает идею?

Oleg
18.09.2018
16:48:49

Google

Alexander
18.09.2018
16:49:11
Что-то невнятное. Сейчас включу его обратно и посмотртю
java.lang.AbstractMethodError
at org.jetbrains.kotlin.resolve.extensions.SyntheticResolveExtension$Companion$getInstance$1.generateSyntheticMethods(SyntheticResolveExtension.kt:70)
Рушится на реализации сериализатора

Oleg
18.09.2018
16:52:48
либо ему не нравится, что версия котлина твоя, и версия котлина в либе не совпадает
либо попробуй, чтобы идея через градл собирала проект (там в настройках есть такая галочка), очень много ошибок убирает

Konstantin
18.09.2018
16:52:55
есть некоторый data class FormState состоящий из компонентов вида data class SelectState, data class TextState. есть обсервабл излучающий этот FormState, однако если юзать оператор distinctUntilChanged то консюмер не получает новый стейт если внутри какого либо SelectState/TextState что то поменялось, т.е. я так понял equals не отрабатывает
это самому надо писать что ли? т.е. типа equals работает только для простых типов но не для сложных конструкций?

Alexander
18.09.2018
16:54:48

Alexey
18.09.2018
16:55:39

Alexander
18.09.2018
16:56:04

Mikhail
18.09.2018
16:56:19

Konstantin
18.09.2018
17:04:22
а, добавил явный компаратор и стало работать как задумано
.distinctUntilChanged { t1: FormState, t2: FormState -> t1 != t2 }

Mikhail
18.09.2018
17:09:42

Google

Mikhail
18.09.2018
17:10:06
вообще очень странное поведение, можно взглянуть на код?

Roman
18.09.2018
17:17:27
ребят, какие сейчас фреймворки для тестирования на котлине в почете? Spek, Mokk, KotlinTest? Есть ли что-то еще интересное для тестов, особенно в контексте андроида?

Badya
18.09.2018
17:24:23

Roman
18.09.2018
17:24:52

Badya
18.09.2018
17:25:10
+ kotlin-test-junit4
Если у вас Даггер нормально заведён по гайдам - моки не нужны

Roman
18.09.2018
17:28:12
вроде как сам гугл рекомендует так не делать

Badya
18.09.2018
17:29:50
На моей памяти там был хороший рабочий пример в доках, сейчас не вспомню - полгода андройд в глаза не видел уже

Roman
18.09.2018
17:35:27
а что-то более kotlin way чем AssertJ сущетсвует в природе?

Badya
18.09.2018
17:41:07

Igor
18.09.2018
17:45:02

Alexander
18.09.2018
17:45:30
Это просто обертка над Junit
кросс-платформенная

Igor
18.09.2018
17:48:01
Прикол, там даже есть property-based тесты https://github.com/kotlintest/kotlintest/blob/master/doc/reference.md#property-based-testing-

Badya
18.09.2018
17:49:25
я имел ввиду https://kotlinlang.org/api/latest/kotlin.test/index.html

Igor
18.09.2018
18:13:03
Допустим, я хочу объявить общие для всех под-проектов зависимости. Если с репозиториями все просто, то с зависимостями что-то не могу найти вменяемой доки, может кто-то навести на путь истинный?
allprojects {
def repositories = project.getRepositories()
def dependencies = project.getDependencies()
repositories.add(repositories.mavenCentral())
repositories.add(repositories.jcenter())
dependencies.???
}

Roman
18.09.2018
18:17:38

OlegKrikun
18.09.2018
18:25:48

Google

Igor
18.09.2018
18:29:21

Badya
18.09.2018
18:32:37
Хотя они все мало полезные какие-то
Для красивого диффа больших объектов можно взять javers

Igor
18.09.2018
18:38:50

Badya
18.09.2018
18:41:39

OlegKrikun
18.09.2018
18:42:41
У меня то что я запостил работает =)

Igor
18.09.2018
18:43:47

OlegKrikun
18.09.2018
18:48:21
так оно точно работать не будет =)

Igor
18.09.2018
18:48:40

OlegKrikun
18.09.2018
18:49:19
ну и ладно =)

Alexander
18.09.2018
19:09:25
Кто-нибудь с kotlinx.serialization всерьез работал? Я не могу понять, как сделать кастомный сериализатор, чтобы он работал для JSON и прочего CBOR. Как делать бинарный сериализатор - понятно, KInput и KOutput. Но каким образом эта штука узнает, что писать в json?

Igor
18.09.2018
19:24:42
Может кто-нибудь посоветовать хороший фреймворк для краулинга в идеале написанный на kotlin?

Никита?❄️
18.09.2018
19:37:32

Igor
18.09.2018
19:38:59

Kirill
18.09.2018
19:48:24

Mikhail
18.09.2018
19:49:59

Leonid
18.09.2018
19:50:09

Google

Тимур
18.09.2018
20:10:47

Alexander
18.09.2018
20:13:19

Leonid
18.09.2018
20:18:50
они берутся из KSerialClassDesc по переданному индексу

Andrey
18.09.2018
20:18:51

Alexander
18.09.2018
20:20:32

Leonid
18.09.2018
20:21:09
можно сгенерированный код посмотреть через show kotlin bytecode - decompile to java, ну или саму реализацию json’a

Alexander
18.09.2018
20:22:07
Я посмотрел. Там все довольно запутанно и без документации. Сразу не разобрался.
Про дескриптор вообще не сообразил, думал, что там все как в яве

Admin
ERROR: S client not available

Leonid
18.09.2018
20:29:22
Без документации – это да ? Можно почитать KEEP, который разъясняет, для чего нужны пачки методов. Но там имена интерфейсов новые

Alexandr
19.09.2018
04:20:56
что то кроме срача про DI полезное было?
это по классике, везде так решается
кстати, что котлин предоставляет в качестве object proxy engine? только jvm proxy?

Alexey
19.09.2018
04:53:14

Alexandr
19.09.2018
05:02:59
не все и не везде just simple
мне кажется все(ну по крайней мере большинство) из тех кто топит за ручную сборку и прочие kiss не заглядывали даже в gof

Alexey
19.09.2018
05:39:54

Google

Alexey
19.09.2018
05:41:47
Если сможете привести пример где без таких костылей вроде dynamic proxy не обойтись, я признаю свою неправоту

Alexandr
19.09.2018
05:42:54
если обещаете не скатываться в срач, то приведу :)

Alexey
19.09.2018
05:44:17

Alexandr
19.09.2018
05:47:09
Клянусь на библии
ок, поставил на заметку, вернусь через пару часов и отпишу, пока работа кипит

Mikhail
19.09.2018
07:01:50

Quantum Harmonizer
19.09.2018
07:23:58

Alexey
19.09.2018
07:30:50

Mikhail
19.09.2018
07:33:27

Alexey
19.09.2018
07:33:51

Quantum Harmonizer
19.09.2018
08:15:29

Alexey
19.09.2018
08:38:59

Тимур
19.09.2018
09:42:02

Mikhail
19.09.2018
09:43:52

Alexey
19.09.2018
09:45:18

Тимур
19.09.2018
09:48:07

Mikhail
19.09.2018
09:49:01
ты оставляешь ссылку на нее
например, id

Тимур
19.09.2018
10:06:55

Mikhail
19.09.2018
10:10:18