
Aleksandr
01.12.2017
09:40:02
спасибо парни

Алексей
01.12.2017
12:23:15
Не могу понять отличия между launch и async. Когда я дёргал юи внутри у меня при launch упало, при async просто не обновил юи. Я понимаю что надо делать внутри async(UI) и там дёргать юи. но опять же async(UI) или launch(UI) ?

Siarhei
01.12.2017
12:29:05
https://kotlinlang.org/docs/tutorials/coroutines-basic-jvm.html
Another way of starting a coroutine is async {}. It is like launch {}, but returns an instance of Deferred<T>, which has an await() function that returns the result of the coroutine. Deferred<T> is a very basic future (fully-fledged JDK futures are also supported, but here we'll confine ourselves to Deferred for now).

Google

Алексей
01.12.2017
12:30:51
Я читал, не доперло до меня и это читал https://stackoverflow.com/questions/46226518/what-is-the-difference-between-launch-join-and-async-await-in-kotlin-coroutines
Можешь своими словами объяснить?
Отличия только что у async есть await()?

Roman
01.12.2017
12:35:09
Если тебе нужен результат работат кода — то async, а потом, где-то в другом месте ты ОБЯЗАТЕЛЬНО делаешь await. А если результат работы не нужен — то launch
async без await использовать НЕЛЬЗЯ, иначе в случае ошибки в коде ты об этом никогда не узнаешь

Алексей
01.12.2017
12:37:50
Получается если результат мне не нужен, я могу использовать и async без await) и зачем тогда launch?

Roman
01.12.2017
12:38:31
НЕЛЬЗЯ async без await
Поэтому и нужен launch

Kirill
01.12.2017
12:38:59
Блин, чувак. Есть прекрасная презентация.
https://www.youtube.com/watch?v=_hfBv0a09Jc
Там всё на пальцах и в лицах объясняется.
Зачем launch и всё остальное.

Roman
01.12.2017
12:39:32
(про async/await vs launch подробно не объясняется там)

Google

Алексей
01.12.2017
12:39:33
Ну вот я делаю async без await
async(UI) {
for (i in 5 downTo 1) {
delay(500)
text.text = i.toString()
}
}

Kirill
01.12.2017
12:39:35
Потрать время, посмотри.

Viktor
01.12.2017
12:40:10

Roman
01.12.2017
12:40:21
И добавь теперь внуть своего async(UI) какой-нибудь throw Exception(). Ты когда нибудь узнаешь что у тебя произошло? Увидишь в каком-нибудь логе стек-трейс?

Алексей
01.12.2017
12:42:18
я 2а дня перебираю код, и я читал документацию и кучу статей(Видео то не смотрел), и у меня встал этот вопрос. Если я бы не задался этим вопросом я бы так и делал "async без await" так как код который я показал работает.
Спасибо, теперь я понял почему я дёргаю ЮИ и у меня приложение не падает
Теперь всё ясно

Roman
01.12.2017
12:43:16
А откуда вообще взялось желание делать async? Во всех же статьях, документации и примерах написано использовать launch.
async вообще в нормальном коде _почти никогда не нужен_

Алексей
01.12.2017
12:45:45
Ну я вижу 2а варианта: 1) в асинк идёшь в базу и потом авейт ждёшь результат и обновляешь юи. Или 2)можно launch и в нём launch(UI) и обновить ui.
Как я понял оба правильные.

Roman
01.12.2017
12:46:34
Да

Алексей
01.12.2017
12:49:20
Ну значит я разобрался) Спасибо, запомню день когда мне сам @relizarov объяснял как правильно использовать корутины)

LynX
01.12.2017
14:14:41
Всем привет! Изучаю котлин недавно. Хочу сделать extension для Array, которое перемешивало бы рандомно содержимое массива. Но уперся в синтаксис. Не могу понять как это писать. Гугление приводит к расширениям обычных классов в стиле fun class.shuffle() {} но как я понимаю это не мой случай

Igor
01.12.2017
14:15:49
В 1.2 же добавили из коробки shuffle

Andrew
01.12.2017
14:16:17
Ваш. Только вам надо, вероятно, не обычный метод написать, а generic.

LynX
01.12.2017
14:17:11
хм, вроде 1.2 стоит, но метод не вызывается

Andrew
01.12.2017
14:17:23
Вот здесь можно подсмотреть синтаксис для таких методов: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/index.html
(там как раз и shuffle есть)

LynX
01.12.2017
14:18:41
Спасибо! Буду разбираться

Vadim
01.12.2017
14:55:51
Ребята есть вопрос
кто то сталкивался с фичей типо
ты зарегался в приложении и тебе по регистрации даётся qr code который привязывается к твоему id?

Anton
01.12.2017
15:01:07
и причем тут котлин?

Google

Vadim
01.12.2017
15:02:05
да, извините немного не по теме, но если так будет вам удобней, то буду писать данный функционал на котлине)

Anton
01.12.2017
15:02:16
а ну тогда другое дело. добро пожаловать

Kirill
01.12.2017
15:02:20
Лол.

Anton
01.12.2017
15:02:58
ну генерируй код и зашивай в него диплинк какой нибудь или еще что

Vadim
01.12.2017
15:08:09
@antonkazakov ну идея в том чтобы ссылаться на бд наверное.
просто вижу аналог. не знаю как представить его у себя
если в двух словах то
1 пользователь зарегался, у него есть ID и свой QR code
2 после чего на этот ID/QR code владелец приложения может начислять балы

Andrew
01.12.2017
15:14:12
1. Уже вроде отметили, что оффтоп, но нет же, надо продолжать.
2. Когда найдёте другой чат, постарайтесь всё-таки мысль нормально сформулировать, ибо я кроме "кто-нибудь сталкивался?" больше вопросов не увидел -- только грубое пояснение, что планируется сделать. Подумайте, что вы собираетесь вообще в ответ получить.

Anton
01.12.2017
15:15:34
можешь хранить как файл, можешь каждый раз заного генерировать его исходя из данных юзера

Dibro
01.12.2017
15:16:21
ребят, кто-то ещё сталкивался?
https://youtrack.jetbrains.com/issue/KT-21568

Igor
01.12.2017
15:38:49
Кстати, а там надо бежать-менять во всех проектах sdk на jre или пока jdk тоже поддерживается?

Andrew
01.12.2017
15:45:01
В слаке Илья Горбунов пишет, что -jre в будущем станут deprecated (https://kotlinlang.slack.com/archives/C0922A726/p1512131884000142?thread_ts=1512071079.000073&cid=C0922A726).

Dibro
01.12.2017
16:01:14

Igor
01.12.2017
16:04:08
Может быть, я точные названия не запоминал. Но я думаю вопрос все равно был понятен

Andrew
01.12.2017
16:04:27
Да, в обратную сторону, я даже не заметил :)

Igor
02.12.2017
12:17:13
Кто-нибудь в курсе что это за лекции и кто-нибудь пойдет на них?
https://compsciclub.ru/courses/kotlin/2017-autumn/classes/

Vladimir
02.12.2017
12:27:48
Там же описание есть

Ivan
02.12.2017
12:34:15
По kotlin.js есть отдельный чатик?

Admin
ERROR: S client not available

Руслан
02.12.2017
12:40:13
Нету, можно прямо тут

Vitalii
02.12.2017
12:41:11

Igor
02.12.2017
12:51:30
Да я просто никогда там не был - вдруг приеду а там ничего нет (опять перенесли или еще чего).
Хотелось бы услышать отзыв бывалых или какой-нибудь альтернативный анонс.

Google

Kirill
02.12.2017
12:55:31
@angmarr
> Да я просто никогда там не был - вдруг приеду а там ничего нет (опять перенесли или еще чего).
очень редко переносят такие лекции
> или какой-нибудь альтернативный анонос.
обычно делают запись, котороую можно будет посмотреть на х2. ИМХО, если нет желания спросить что-то у Андрея лично — смотреть трансляцию удобнее
а, ну может быть там будут стикеры раздавать. за ними стоит сходить :)

Данил
02.12.2017
19:30:25
Было здорово. Много неформальной информации, ещё один пазлер, о котором не говорил Кекс. Спасибо Андрею большое.

Igor
02.12.2017
19:39:43

Anton
02.12.2017
19:41:44
Стикеры давали?

Данил
02.12.2017
19:42:50
Стикеров вроде не было, не рвался. Запись была, но боюсь видно будет плохо - Андрей объяснял на доске

Kirill
02.12.2017
19:55:25
> ещё один пазлер, о котором не говорил Кекс
println(null + null) ?

Anatoly
02.12.2017
19:58:14
Да, хорошая беседа получилась с Андреем Бреславом.

Данил
02.12.2017
20:00:04

Kirill
02.12.2017
20:00:26

Данил
02.12.2017
20:01:37

Kirill
02.12.2017
20:01:56

Данил
02.12.2017
20:02:13
там прям пазлер-пазлер, не Кексовские выдумки ?

Vladimir
02.12.2017
20:02:24
public class A(map : HashMap <String, out String>) {
val t : String by map
}
> ещё один пазлер, о котором не говорил Кекс
println(null + null) ?

Boris
02.12.2017
20:14:56
Что за паззлер-то?! Расскажите, я же не засну!

Данил
02.12.2017
20:20:25
ну так запусти и прочитай поле t ?
мапку только правильную скорми
import kotlin.collections.*
fun main(args: Array<String>) {
val a = A(hashMapOf("t" to "somevalue"))
println(a.t)
}
public class A(map : HashMap <String, out String>) {
val t : String by map
}

Kirill
02.12.2017
20:25:27

Google

Данил
02.12.2017
20:28:32
import kotlin.collections.*
fun main(args: Array<String>) {
val a = A(hashMapOf("t" to "somevalue"))
println(a.t)
}
public class A(map : HashMap <String, out String>) {
val t : String by map
}
THX

Vladimir
02.12.2017
20:28:44
Хех, я отправлял вторым сообщением сам example вызова, а оно не улетело, а я не заметил:( Хех. Ну вот, выше сам пример.