
dimiii
28.06.2018
12:54:57

Bogdan
28.06.2018
12:56:26

Kirill
28.06.2018
12:57:27

Anton
28.06.2018
13:00:32

Google

Bogdan
28.06.2018
13:02:44
ведь доку незачем читать

dimiii
28.06.2018
13:15:06
Ок, что-то полезное я вынес из этого обсуждения https://github.com/kittinunf/Fuel
https://github.com/kittinunf/Fuel/blob/master/fuel-coroutines/src/test/kotlin/com/github/kittinunf/fuel/coroutines/CoroutinesTest.kt

Bogdan
28.06.2018
13:24:13
https://github.com/vkostyukov/kotlin-sublime-package кто пользовался ? Я просто в третем устанавливал пакет котлина, он чемто отличается ?
я так понял, только подсветка

Disly
28.06.2018
13:45:41
Логично

Жабра
28.06.2018
21:14:02
https://m.habr.com/post/415471/ хех.)

Sergey
28.06.2018
21:38:45
оо, мы такое хотели делать на поиграться)

Bogdan
28.06.2018
22:11:39

Dumitru
28.06.2018
22:18:14
Будет ли что то новое среди client ui фреймворков для kotlin-js ?

Sergey
28.06.2018
22:21:10
есть же реакт)
ну и Ring UI

Google

Dumitru
28.06.2018
22:22:59
я слышал про что то нативное (от компании)
про Ring UI не знал, спс

Alexander
29.06.2018
07:11:41
Напоролся на такую проблему: у меня есть некотороая информация о классе, которая хранится в пропертях, а точнее в их делегатах (в частности там сидят значения по-умолчанию для параметров). Делегаты не используют thisRef родительского класса. Я спокойно могу получить список пропертей класса, но оказывается, что для того, чтобы получить инстанс делегата, мне зачем-то нужен инстанс родителя, причем null не годится.
Что за фигня? И как с этим бороться?
Справился путем передачи Unit в качестве ресивера, но все равно конструкция кажется странной
Все, кажется понял, почему оно так...

Alexei
29.06.2018
07:40:30
мне кажется что мой левел кт слишком низкий что бы просто осознать проблему уже не говоря о ее решении...

Alexander
29.06.2018
07:42:33
Делегаты - очень мощная штука, но они очень хитро инстанцируются
Конструктор делегата таки требует существования объекта ресивера, и это наверное обойти невозможно.

Bogdan
29.06.2018
07:44:22

Alexander
29.06.2018
07:44:33
Да.
Точнее про их инстансы

Bogdan
29.06.2018
07:45:06
Да.
ну Бреслав говорил, что это сложно подерживаямая штука
и там есть странности

Alexander
29.06.2018
07:45:24
Безусловно, но супермощная.

Bogdan
29.06.2018
07:45:47

Alexander
29.06.2018
07:45:48
В данно случае я сам баклан. Инстанс делегата конечно не может существовать без инстанса объекта
У меня есть некоторая конфигурационная структура, и я из нее делегатами тяну отдельные элементы. А теперь хочу сделать авто-документируемую систему, которая будет знать, какие свойства используются. Раньше я делал это полностью на аннотациях
но делегатами сильно удобнее и красивее
Заодно делегат может кэшировать это самое свойство если известно, что оно не изменяется и не дергать каждый раз поиск по структуре

Bogdan
29.06.2018
07:47:55

Google

Alexander
29.06.2018
07:48:40
Ну примитивный пример есть и в stdlib: https://kotlinlang.org/docs/reference/delegated-properties.html#storing-properties-in-a-map
Просто у меня более сложная управляющая структура. Там можно использовать в принципе все, что угодно, хоть json, хоть что
а сам делегат выглядит вот так:
class ValueDelegate<out T>(
val target: Meta,
val valueName: String? = null,
val def: T? = null,
private val converter: (Value) -> T
) : ReadOnlyProperty<Any?, T> {
private var cached: T? = null
private fun getValueInternal(thisRef: Any?, property: KProperty<*>): T {
val key = valueName ?: property.name
return when {
target.hasValue(key) -> converter(target.getValue(key))
def != null -> def
else -> converter(getDescribedValue(key, thisRef, property))
}
}
override operator fun getValue(thisRef: Any?, property: KProperty<*>): T {
if (target is SealedNode && cached == null) {
cached = getValueInternal(thisRef, property)
}
return cached ?: getValueInternal(thisRef, property)
}
}


Konstantine
29.06.2018
07:55:37

Alexander
29.06.2018
07:57:44
На вкус и цвет все фломастеры разные, но вопрос в том, что делать. Делегаты очень активно используются например в tornadofx, маскируя достаточно страшные проперти в JavaFX

Roman
29.06.2018
08:14:00
Как можно сделать val проперти внутри secondary constructor ?
что-то типа такого
class Person(val name: String) {
constructor(age: Int): this("") {
println("Constructor with age $age")
}
}

Alexander
29.06.2018
08:15:53
А в чем тут проблема?

Roman
29.06.2018
08:16:29
idea говорит что нельзя писать val age

Лёша
29.06.2018
08:17:02
объяви age внутри класса и в secondary конструкторе уже присваивай ему значение

Alexander
29.06.2018
08:17:13
конечно нельзя. Это должно быть поле класса. Например var age: Int? = null
При этом оно может быть null, так как главный конструктор его не присваивает

Roman
29.06.2018
08:18:01
я просто думал что пройдет такой же финт, как и с class Person(val field: String), где он автоматом сгенерирует проперти

Alexander
29.06.2018
08:18:26
А как тогда вызов по главному конструктору его присвоит?

Roman
29.06.2018
08:18:46
да, тоже верно
после go мозги атрофируются )

dimiii
29.06.2018
08:19:55

Roman
29.06.2018
08:21:09

1337
29.06.2018
08:21:35
интересно
а почему не на го пишете?

Google

Alexander
29.06.2018
08:21:52
Плата за типо-безопасность

1337
29.06.2018
08:22:01
там наверное тоже свои подводные камни есть

Roman
29.06.2018
08:22:05

Лёша
29.06.2018
08:22:10

dimiii
29.06.2018
08:22:14

1337
29.06.2018
08:22:46

Alexander
29.06.2018
08:23:05
Руки прочь от делегатов. Там не все гладко, но идея отличная. К объявлению конструкторов надо привыкнуть, но после этого очень удобно.

1337
29.06.2018
08:23:43
вы про доп. слово constructor?
или что

Жабра
29.06.2018
08:23:51

1337
29.06.2018
08:24:07
что в конструкторах не нра

Anton
29.06.2018
08:24:48

dimiii
29.06.2018
08:28:26

Alexander
29.06.2018
08:29:46
Ну я этой штукой не пользуюсь. Я знаю, что Бреслв на нее ругался, но какая-то большая мысль там вроде есть

Bogdan
29.06.2018
08:43:15

Boris
29.06.2018
12:03:52
Но работает оно не совсем как хотелось бы для этого

Bogdan
29.06.2018
12:11:03

Google

Mikhail
29.06.2018
12:23:13
Ребят, такой вопрос: кто нибудь писал плагины для IntelliJ? Есть какие-нибудь внятные гайды (лучше на котлине). Хочу добавить Quick fix свой для андроидовых ресурсов в xml

dimiii
29.06.2018
12:43:29
И очень полезный раздел https://www.jetbrains.org/intellij/sdk/docs/basics/architectural_overview/psi.html

Kirill
29.06.2018
13:13:55
а зачем тебе это понадобилось?

Mikhail
29.06.2018
13:15:58
я писал...
Хорошо, подскажи, сделать свой quick fix для xml ресурсов андроеда возможно? Хочу чтобы он всякие точные значения вроде "8dp" подсвечивал и по alt-enter предлагал заменить на ресурс из dimen.xml с таким же значением

Kirill
29.06.2018
13:17:11

Mikhail
29.06.2018
13:17:40

Kirill
29.06.2018
13:18:22

Mikhail
29.06.2018
13:19:15
что вообще значит (абревиатура?) PsiElement?

dimiii
29.06.2018
13:19:26

Kirill
29.06.2018
13:19:45

dimiii
29.06.2018
13:21:19

Mikhail
29.06.2018
13:21:23
Окей, спасибо

Kirill
29.06.2018
13:22:33

Anton
29.06.2018
13:26:49