
Sergey
30.03.2018
10:55:46

Mikhail
30.03.2018
10:57:37

Sergey
30.03.2018
10:58:04

Берял
30.03.2018
10:58:54

Google

Ivan
30.03.2018
10:59:05

Берял
30.03.2018
10:59:30

Alexey
30.03.2018
11:00:28
код вообще не эквивалентен
Чтобы код стал одинаковым там не хватает двух if(shit != null)
Вот как напишешь так и посмотрим какой код реально красивше
так то что ты написал пишется эквивалентно, то есть в Repo будет два поля типа Optional<Shit>
Палемика какая то

Sergey
30.03.2018
11:03:24

Alexey
30.03.2018
11:03:35
с такой, что ты делаешь flatMap

Mikhail
30.03.2018
11:03:50

Sergey
30.03.2018
11:04:17
там возвращается Long
а не Long?
какая еще проверка на null?

Google

Alexey
30.03.2018
11:04:45
А с какого перепуга тогда второй пример возвращает Optional<Long>

Руслан
30.03.2018
11:04:51

Sergey
30.03.2018
11:05:04

Alexey
30.03.2018
11:05:29
А бле, это вообще какие то странные типы
Тогда сорян

Sergey
30.03.2018
11:05:56
вот видишь
уже сами паритесь со своими обертками
?

Руслан
30.03.2018
11:06:10
?♂️ смешались, люди, опшеналы и кони

Alexey
30.03.2018
11:06:11
count() это типо await?
где тут конструкция, которая разрывает поток вычисления?

Руслан
30.03.2018
11:06:39
await там где вызов сервиса
suspended функция

Alexey
30.03.2018
11:07:21
типо там автоматически await подставился?

Руслан
30.03.2018
11:07:36
кажется что тебе лучше пойти посмотреть доклад про корутины, например этот, а не задавать новичковые вопросы в чате https://www.youtube.com/watch?v=b4mBmi1QNF0&feature=youtu.be
например вот этот

Mikhail
30.03.2018
11:08:49
Кто-нибудь пользует kotlintest? там какой junit нужен? https://github.com/kotlintest/kotlintest

Alexey
30.03.2018
11:09:10
Слушать два часа чтобы понять где появился разрыв потока, нет спасибо

Google

Руслан
30.03.2018
11:09:50

Alexey
30.03.2018
11:09:57
Вот если пепер кинишь будет лучше

Руслан
30.03.2018
11:10:48
и ты будешь читать? https://github.com/Kotlin/kotlinx.coroutines https://github.com/Kotlin/kotlin-coroutines

Mikhail
30.03.2018
11:13:25
junit5
чет они в 5 версии все поменяли(

Руслан
30.03.2018
11:13:49
но вообще есть возможность запускать junit4 тесты и junit5. vintage кажется пакет называется, в доке есть описание

Alexey
30.03.2018
11:16:15

Руслан
30.03.2018
11:16:44
Да, тут самые кишочки

Alexey
30.03.2018
11:17:10
Ну вот там везде пишут что должны быть suspention points
Я просто их в коде не вижу
Вот и агрюсь

Руслан
30.03.2018
11:17:45
Ну если бы ты попробовал то обратил внимание на нейкие закорючки в gutter в ide
в скрине они тоже добавлены

Alexey
30.03.2018
11:17:58
Я заметил
Поэтому и спросил, что это срань
В спеке я не заметил упоминаний про это
Там просто везде явно делают await join и тд

Руслан
30.03.2018
11:20:09
это просто функции

Google

Руслан
30.03.2018
11:20:28
ключевое слово только одно - suspend

Alexey
30.03.2018
11:22:56
Ясно, спасибо

Vladislav
30.03.2018
11:24:27

Руслан
30.03.2018
11:25:21

Vladislav
30.03.2018
11:25:21
Почему не все обычные keywords?

Mikhail
30.03.2018
11:25:26
наверное, это что-то связанное с парсингом, типа enum может встречаться в названии переменной, а class нет

Konstantin
30.03.2018
11:26:06

Vladislav
30.03.2018
11:26:09

Mikhail
30.03.2018
11:28:31
ты еще скажи, что "из ТЗ не понятно чтоли, как должно работать приложение? Сложно компилировать сразу в apk?"

Roman
30.03.2018
11:35:25
Ключевая разница в том, что императивные языки "из коробки" поддерживают фиксированный набор монад над которыми работает их "do нотация". Обычно это IO и Try монады. Такой выбор определяется прагматикой (это то, что программистам нужно чаще всего). В функциональных языках общий синтаксис для любой монады. Однако, известно что "continuation is the mother of all mondas", так что с поддержкой корутин в котлине любители побаловаться экзотическими монадами могу легко сделать для них do-нотацию поверх корутин (в Arrow это успешно реализовано).


Тимур
30.03.2018
11:48:25
Слушать два часа чтобы понять где появился разрыв потока, нет спасибо
Вообще доклад очень хороший, ты зря.
И по уровню вопросов скорее ощущение: у меня не получается забить гвоздь, я пользуюсь молотком, мне надо его держать за ручку или за что-то другое?
Но я не хочу изучать инструмент которым я пользуюсь, мне надо просто гвоздь забить и все, поэтому лучше спрошу в чате: за какую часть вы держите молоток?

Mikhail
30.03.2018
11:53:29


Roman
30.03.2018
11:59:51
Здесь не правильно смешаны понятия. Можно сказать, что suspend функция под капотом реализаует "do notation" для "Continuation monad" поверх котороый _библиотечные функции_ реализуют deferred, каналы, и т.д. т.п. (и вообще поверх continuation monad можно реализовать любую другую монаду)
Кому интересно, можно почитать: https://www.schoolofhaskell.com/school/to-infinity-and-beyond/pick-of-the-week/the-mother-of-all-monads
Но вообще прагмитизм говорит, что если что-то программистам нужно постоянно, то оно должно быть максимально поддержано в языке и в инструментах. Да, я могу реализовать с библиотеке свой Option<T> поверх "do-нотации", но если он _родной_ в языке то им будет пользоваться удобней. Обратно то же верно. Не нужно добавлять в язык фичи, если и без них можно сделать библиотечку чтобы получить ни чем не худший experinece (это одна из причин по которой в Котлин корутинах не прибиты гвоздями async/await, а сделан более общий механизм - async/await неплохо работает как библиотечные функции)


Alexey
30.03.2018
12:12:42

Dmitry
30.03.2018
12:36:36
всем привет. решил попробовать карутину, и возник вопрос. наверное, нубский ) но с полпинка нагуглить не удалось
вопрос: в карутине изменяю лист из основного потока. а по завершению работы его отображаю изменения. но их нет (хотя по факту они есть). куда смотреть?

Alexey
30.03.2018
12:37:52
Код поможет помочь

Google

Quantum Harmonizer
30.03.2018
12:38:42

Dmitry
30.03.2018
12:40:22

Sabbath
30.03.2018
12:41:20
Аааа хелпми. Кто знает как в нексус добавить репозиторий jetbrains. Хочу exposed библиотеку вытянуть для котлина

Руслан
30.03.2018
12:41:54

Sabbath
30.03.2018
12:42:35
Барух будет ругатся на нексус)

Ivan
30.03.2018
12:42:35

Sabbath
30.03.2018
12:42:49
Хех

Руслан
30.03.2018
12:43:05
Энивей это явно не про котлин вопрос :)

Sabbath
30.03.2018
12:43:16
Угум)

Руслан
30.03.2018
12:44:21
А конкретнее https://ru.stackoverflow.com/help/mcve

Dmitry
30.03.2018
13:09:54

Bogdan
30.03.2018
20:15:44
не нужны - не пользуйся?♂️
а апи построено на них - "потамушта" стандарт, нулабле типы вообще ошибка человечества. Вот объект вова разве может быть нулл?

Alexandr
30.03.2018
20:17:08
Коллеги, есть проект в котором присутствует кодо-генерация. Как лучше поступить? генерировать всё в один файл или каждому классу/функции свой отдельный файл. Вопрос исключительно с точки зрения производительности IDE при анализе одного и второго

Bogdan
30.03.2018
20:22:33

Alexandr
30.03.2018
20:23:27
Когда люди пишут и читают код - да. Чтобы легче было читать и совместо менять разные файлы. но тут генерация. Вопрос только в том как меньше нагружать анализатор IDE

Leonid
30.03.2018
20:24:15
Чем меньше строчек в одном файле, тем лучше =)
Больше 10-20к в одном файле уже больно

Alexandr
30.03.2018
20:25:20
в одном файле 2500 строк.

Leonid
30.03.2018
20:25:38
Тогда не слишком критично, думаю