
Жабра
11.07.2017
19:17:42
Перед этим я же проверяю на nonnull.

Михаил
11.07.2017
19:17:48

Жабра
11.07.2017
19:17:50
Поэтому ничего страшного.

Google

Михаил
11.07.2017
19:18:32

Boris
11.07.2017
19:18:37
я написал выше несколько способов как это сделать по-другому

Sergey
11.07.2017
19:18:47
кто-нибудь читал книгу Antonio Leiva?
https://antonioleiva.com/kotlin-android-developers-book/

Igor
11.07.2017
19:19:35

Жабра
11.07.2017
19:21:28
Но дерево может меняться, по идее.
Вряд ли будет, но вполне может.

Boris
11.07.2017
19:22:40
мутабельное тоже можно без проблем сделать, я же выше пару примеров написал как проверить var на null

Жабра
11.07.2017
19:25:05
При таком случае получается несостыковка типов, даже если проверил на nonnull. Ожидается Node, a приходит Node?
data class A(var prop: Int? = null)
fun test() {
val a = A()
a.prop.let { prop ->
if (prop != null) {
call(prop)
} else {
somethingElse()
}
}
}
fun call(a: Int) {
}

Boris
11.07.2017
19:25:50
мы же про prop говорим

Жабра
11.07.2017
19:26:47
A, точно, мой косяк.)
Всё, спасибо.)

Google

Boris
11.07.2017
19:27:07
а он внутри let`-а `val

Igor
11.07.2017
19:27:18
Можно завести объект под листьям, хотя бы от ? избавишся

Жабра
11.07.2017
19:27:33
И кстати, можно вкратце объяснить значение слово "мутабельность"?

Kylych
11.07.2017
19:28:03
Изменяемый

Жабра
11.07.2017
19:28:40
А
Понял.

Yaroslav
11.07.2017
19:33:50
Коллеги, а можно как-то прикрутить корутины к onActivityResult? Чтобы был метод который стартует новую активити и ждет от нее результата?
В какую сторону копать? Каналы?

Igor
11.07.2017
19:37:25
Выбрасывал сюда такой код где то месяц назад.
В общем начать надо с того, что ты понять как ты будешь дергать корутину из onActivityResult производной активити
А с каналами идея интересная (но имхо _может быть_ тут немножко переусложняешь)

Yaroslav
11.07.2017
19:42:16
Там был гист с ВК коллбеками? Если это он, то я немного по другому думал организовать, что-то типа val result = startForResult(intent) Это вобще легально? так можно сделать?

Igor
11.07.2017
19:47:35
Запустись то можно, а вот как красиво подципится не onResult лично мне не понятно,
у дурацких активити нет евентов

Yaroslav
11.07.2017
19:49:35
вот, в этом главный затык, что этот метод стартанет раньше чем вызовется onActivityResult() поэтому я и начал думать про каналы

balolam
11.07.2017
19:55:30
Всем привет, вопрос чутка не в тему чата, но кто может посоветовать библиотеку для работы с Telegram API на Java/Kotlin, важно что бы была поддержка покупок?

Igor
11.07.2017
19:57:41

Yaroslav
11.07.2017
19:57:44
естественно не работает

Igor
11.07.2017
20:06:26
Можно конечно заменить на канал и даже все будет работать,
но что то тут есть противоестественное (в этом подходе)

Жабра
11.07.2017
20:15:06
А есть вариант сделать так, чтобы можно было поменять current?

Google

Жабра
11.07.2017
20:15:08

Quantum Harmonizer
11.07.2017
20:15:34
Присваивать к параметру — не очень адекватно, и потому запрещено в Котлине.

Жабра
11.07.2017
20:16:34
На счёт адекватности - не согласен.

Quantum Harmonizer
11.07.2017
20:17:16
Почему? Функция обрабатывает входные данные, подменять их == стрелять себе в ногу.

Жабра
11.07.2017
20:18:14
Если писать на ФП - да. А в ООП - ни капельки. К тому же current не будет инициализироваться явно. При запуске достаточно будет указать только data
Если корень пуст, то он просто инициализируется

Quantum Harmonizer
11.07.2017
20:19:01

Igor
11.07.2017
20:19:23

Жабра
11.07.2017
20:19:41
Корень дерева. Это код для бинарного дерева, я кидал чуть выше.

Quantum Harmonizer
11.07.2017
20:20:10

Жабра
11.07.2017
20:20:54
Так ничего и не должно выполниться. Ей просто присвоится объект класса Node

Quantum Harmonizer
11.07.2017
20:21:11
А результат присваивания использоваться не будет.

Жабра
11.07.2017
20:23:12
Он и не должен. В переменную, ссылку на которую хранит current, нужно записать новый объект.
Потому что эта позиция дерева, где мы должны сделать новый лист.

Quantum Harmonizer
11.07.2017
20:23:32

Андрей
11.07.2017
20:23:53

Жабра
11.07.2017
20:25:34
А, точно.
Под конец дня туплю жёстко, простите.

Google

Жабра
11.07.2017
20:40:56
Блин, как писать на Джаве после Котлина?)

Nikita
11.07.2017
20:42:07
Есть такое, да

Руслан
11.07.2017
20:42:13
Самая большая подстава

Roman
11.07.2017
20:42:27
Очень тяжко, да.

Admin
ERROR: S client not available

Igor
11.07.2017
20:42:33
Да я вот тоже задаюсь таким вопрос "как писать на котлине, после OCaml?.." ?

Quantum Harmonizer
11.07.2017
20:42:52
Вообще никаких проблем не вижу. (не ответ Игорю :)

Руслан
11.07.2017
20:43:10

Igor
11.07.2017
20:43:21
...OOP ? (я шуткую, Котлин годный язык (для jvm))

Nikita
11.07.2017
20:44:13

Igor
11.07.2017
20:49:42
Кстати, как думаете в Kotlin нужен паттерн визитор или лучше пытаться на when случаи разгуливать?
Был ли у вас опыт его применения на котлине?

Михаил
11.07.2017
21:12:28
тут занятную штуку откопал, которая избавит от налбл var местами - Delegates.notNull()
чуть покрасивее чем latenit var

Igor
11.07.2017
21:14:05
С подключением))

Михаил
11.07.2017
21:14:28
спасибо)

Artem
11.07.2017
21:14:37
Можно пример использования?)

Жабра
11.07.2017
21:14:43
++

Михаил
11.07.2017
21:15:13
private var favoriteCheckbox: MenuItem by Delegates.notNull()
и инициализируешь когда хочешь, не проинициализировал и вызвал - получил IllegalStateException в лицо

Google

Nikita
11.07.2017
21:18:25
А какая разница между этим и lateinit?

Михаил
11.07.2017
21:20:52
почти никакой. только тут создается еще лишнее поле-делегат

Жабра
11.07.2017
21:22:42
А как проверить, лежит ли в lateinit var что-то пустое? Кстати, а что там лежит, если не null?

Михаил
11.07.2017
21:24:33

Quantum Harmonizer
11.07.2017
21:26:03

Igor
11.07.2017
22:17:31
Народ, такое бинарное дерево идиоматичнее для Kotlin? (или можно лучше?)
https://i.gyazo.com/cc30d90fa155dcdfa7eb3bb4f3cbccd7.png

Михаил
12.07.2017
00:39:48
в чем выстрел в ногу?
override fun getUser(): UserDto = runBlocking {
userDeferred.await()
}
при вызове из меинтреда все отлично работает. если же в runBlocking передать контекст (UI) , то намертво блокирует меин тред. PS: дело происходит на андроиде

Роман
12.07.2017
01:49:14
Клуб людей, которые всегда и везде делают деньги!
?????
Делюсь мануалами, практическими советами и темами, которые проверены лично на моем опыте и опыте моих близких.
?Вступайте в мой паблик прямо сейчас: @moneycl

You
12.07.2017
01:53:22
@HeapyHop

Ceannellen
12.07.2017
03:33:36
https://t.me/telegaup - авторский канал по продвижению и монетизации каналов в Telegram.

Жабра
12.07.2017
04:13:22