@kotlin_lang

Страница 243 из 982
Жабра
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
В смысле?
ну имхо вариант с let многословней

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
А для "хороших"?
Переписать алгоритм, так что бы left и right били иммутабельны

Жабра
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) { }

Жабра
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
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

Если корень пуст, то он просто инициализируется

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

Quantum Harmonizer
11.07.2017
20:20:10
Если корень пуст, то он просто инициализируется
Если что, при current == null ни один add не выполнится. Отстреливание ног началось.

Жабра
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
Так ничего и не должно выполниться. Ей просто присвоится объект класса Node
Если бы такое присваивание сработало, то просто переменная current стала бы указывать на другой объект. Связь с оригинальным потерялась бы, и все изменения его не коснулись бы.

Жабра
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
Да я вот тоже задаюсь таким вопрос "как писать на котлине, после OCaml?.." ?
# let area radius = let pi = 3.14 in radius *. radius *. pi ;; val area : float -> float = <fun> # area 2.0 ;; - : float = 12.56 Нет, спасибо

Igor
11.07.2017
20:49:42
# let area radius = let pi = 3.14 in radius *. radius *. pi ;; val area : float -> float = <fun> # area 2.0 ;; - : float = 12.56 Нет, спасибо
Этот окамл - какой то неправильный (по крайней мере так никто не пишет). Ну да ладно...

Кстати, как думаете в 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?

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.

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