
Umren
06.07.2017
12:15:12
так ты вначале пиши так же, это никак не вредит, а потом будешь уже поднатаскиваться в idiomatic

Anton
06.07.2017
12:15:21
так и делаю)

Umren
06.07.2017
12:15:31
неидиоматичный котлин который как джава всеравно лучше выглядит чем просто джава
а когда будешь его апгрейдить будет еще круче

Google

Ivan
06.07.2017
12:25:24
привет, гляньте на этот кусок и подскажите как бы организовать его получше
не нравиться this.view = view as V - есть более грамотное решение?

Lost
06.07.2017
12:26:04
народ, дата класс в качестве модельки для ретрофита ведь можно использовать?

whalemare
06.07.2017
12:26:34

Lost
06.07.2017
12:27:02
а аннотации перед валами норм распарсятся?

Руслан
06.07.2017
12:27:03
А у view есть супер класс или интерфейс?

Ivan
06.07.2017
12:27:56

Igor
06.07.2017
12:28:21
А как еще их юзать?
Да пока сам не знаю.
Думал заюзать при описания предметной области по T(ype)DD, но что-то не получается.

whalemare
06.07.2017
12:28:27

Руслан
06.07.2017
12:28:55

whalemare
06.07.2017
12:29:43
кстати, а зачем тебе сеттить View как Any?
тип же явно V будет

Руслан
06.07.2017
12:29:45
и в setView будет соответсвенно View?

Google

Ivan
06.07.2017
12:30:29

whalemare
06.07.2017
12:30:58
ща
компилятор ругается)
Вот моя имплементация презентера и там без всяких any
https://gist.github.com/whalemare/53752af91c0aa9403fe37d6097f236e3

Ivan
06.07.2017
12:34:13

whalemare
06.07.2017
12:34:32
В смысле, как используется хочешь посмотреть?

Ivan
06.07.2017
12:35:00
ага

whalemare
06.07.2017
12:36:30
ага
Добавил, правда не фрагмент, но суть одна

Artem
06.07.2017
13:06:59
У меня в таком случае затормозится и выполнение корутины?
Не могу понять до конца, как корутины работают

Roman
06.07.2017
13:08:59
@TemMax В данном примере всё будет работать и если убрать runBlocking и заменить delay на sleep
Ибо корутиты запускаются (launch) в отдельном пуле потоков (CommonPool)
runBlocking { delay(xxx) } это примерно то же что Thread.sleep(xx). Разница в том, что изнутри runBlocking блока можно еще и suspend функции вызывать, но данный пример этой возможностью ни как не пользуется, поэтому в данном примере все-равно

Artem
06.07.2017
13:20:57
Этот момент понял. Спасибо!)
Так же остались недопонимания по поводу suspend функций. Если у меня, к примеру, в блоке async(UI){} идёт несколько последовательных suspend функций, то они будут выполняться только последовательно? При этом, если функция не suspend, то я могу использовать .await() для того, чтобы приостановить корутину до завершения выполнения этой не suspend функции. Так?
Вроде бы как так получается. Вчитался ещё пару раз в объяснение и перечитал пример и понял. Спасибо за пояснения)

? animufag ?
06.07.2017
13:24:54

Artem
06.07.2017
13:25:33

? animufag ?
06.07.2017
13:26:00

Google

Artem
06.07.2017
13:26:36
вот тут пример: https://github.com/Kotlin/kotlinx.coroutines/blob/master/coroutines-guide.md#composing-suspending-functions
и вроде работает как надо

? animufag ?
06.07.2017
13:27:39

Artem
06.07.2017
13:28:35
нет. delay срабатывает внутри suspend функции, как я понял и влияет только на то, что происходит внутри этой suspend функции. А пока она не завершится, то не пойдёт выполнение дальше за эту suspend функцию
я выше кинул ссылочку с привязкой к абзацу, оттуда перечитав понял

? animufag ?
06.07.2017
13:29:45
или сейчас речь только про runBlocking?
у меня правда они внутри launch выполнялись последовательно, но я ещё толком не читал как оно должно работать)
вообще жили себе андроид разработчики с джавой и rx и всё было более менее ок
говорили друг другу про фп, как классно мёржат, флэтмапят
а потом котлин пришёл и все на него подсели. а когда подсели в него закинули корутины. и теперь все думают что с ними сделать чтобы быть в тренде
алсо не понимаю что делать с контекстом у continuation. из интерфейса это просто мап какойто. из дебагера видно что там переменные хранятся и стейт. но его не сериализовать, ни послать никуда

Artem
06.07.2017
13:39:53

Ilya
06.07.2017
14:52:57
https://twitter.com/RunChristinaRun/status/882974255972892672

Sergey
06.07.2017
14:58:21
это которая из Pinterest?

Ilya
06.07.2017
15:01:44
Да
Я думаю, она собирает материал для KotlinConf

? animufag ?
06.07.2017
15:03:09
можете второе предложение пояснить. ну и кто это вообще
понятно что второе предложение можно скипнуть. просто напрягает, что нет догадок

Anton
06.07.2017
15:05:59
"Nothing is too small to point out!" ?

Google

? animufag ?
06.07.2017
15:06:24
да

Anton
06.07.2017
15:06:27
типа это касается даже самых мелочей

? animufag ?
06.07.2017
15:08:44
спс

Igor
06.07.2017
15:21:53
Kotlin не видит сгенеренные (библиотекой Litho) сорцы в папке /apt/.
Есть у кого снипет на правильную настройку?
Пытаюсь по этому https://blog.nishtahir.com/2016/06/25/how-to-get-idea-to-detect-kotlin-generated-sources-using-gradle/ но что-то не очень помогает.

? animufag ?
06.07.2017
15:39:58
лол https://youtrack.jetbrains.com/issue/KT-2780 https://youtrack.jetbrains.com/issue/KT-4749
5 лет прошло

Max
06.07.2017
17:37:20
Да и это бесит

Igor
06.07.2017
17:39:42

Admin
ERROR: S client not available

? animufag ?
06.07.2017
17:41:00
ну я чёт давно эти константы в коде не писал и вот
ну ещё и диагностика такая смешная
мол нужен инт а у тебя интегер

Igor
06.07.2017
17:48:19
А все таки прикольно было бы дергать suspend из Java, передавая лямбду.
Правда CoroutineContext (особенно) и resumeWithException все обламывают.

? animufag ?
06.07.2017
17:59:34
как думаете возможно сделать функцию
inline fun <T, S:T> filterSubtype(list: List<T>): List<S>

Михаил
06.07.2017
18:00:45
ну именно в такой сигнатуре думаю нет)
угадал?

? animufag ?
06.07.2017
18:01:11
не знаю))
ладно попробую сделать

Михаил
06.07.2017
18:01:25
возможно если reifeid добавить, то получится

? animufag ?
06.07.2017
18:01:41
у меня просто чуть сложнее функция и там erased types вылезает

Google

? animufag ?
06.07.2017
18:01:48
о
точно

Igor
06.07.2017
18:02:47

? animufag ?
06.07.2017
18:03:32
да, подзабыл про такое слово. думал inline достаточно

Dmitriy
06.07.2017
20:10:19
всем привет, подскажите немного про dynamic. У меня есть JSON, полученный из моего REST-API. У меня он находится в переменной с типом dynamic. Его как-то простым образом можно сконвертировать в нормальный модельный класс, или нужно из него просто руками собрать объект?

Oleg
06.07.2017
20:22:51
Через Ретрофит можно сразу модель получать
Там Gson converter
У модели должны поля быть обозначены
@SerializableName как-то так
Призабыл

Dmitriy
06.07.2017
20:25:01
она разве не Java?

Igor
06.07.2017
20:25:27

Dmitriy
06.07.2017
20:25:41
чего-то не подумал )
я думал dynamic только в js используют

Dibro
06.07.2017
20:32:40

Dmitriy
06.07.2017
20:38:02
а как вообще для бэкенда и фроентэнда использовать одни и те же модельные классы? я вот пример смотрю, который фуллстэк на гитхабе, там модельные классы, как я понял, просто скопированы из одного проекта в другой

Igor
06.07.2017
20:39:16
А если вынести в отдельную либу/модуль?

Dibro
06.07.2017
20:39:35
хотя я где-то видел нечто подобное...