@kotlin_lang

Страница 611 из 982
Sergey
30.03.2018
10:55:46
когда метод может делать какие-нибудь обобщенные вещи и над Result и над Option и над Future любым другим
когда метод может что-то делать над обертками, а если у тебя нет этих оберток и тебе они не нужны?

Sergey
30.03.2018
10:58:04
к тому что и то и другое - языковые фичи. только одна из них в котлине есть, а другой нет. как ты на основе этого определяешь какая из них удобнее - непонятно
тут скорее сравнение котлина и скалы. ты то можешь выбрать что использовать в следующем проекте? а в зависимости от языка у тебя уже будут либо корутины+нуллабл, либо будешь обмазан опшеналами, но зато с do нотациями

Google
Берял
30.03.2018
10:59:30
я попробовав и то и другое тоже сделал выбор в пользу опшнов, субъективно они удобнее и гибче
главное чтобы поддержка со стороны языка была, а не как в джаве

Alexey
30.03.2018
11:00:28
код вообще не эквивалентен

Чтобы код стал одинаковым там не хватает двух if(shit != null)

Вот как напишешь так и посмотрим какой код реально красивше

так то что ты написал пишется эквивалентно, то есть в Repo будет два поля типа Optional<Shit>

Палемика какая то

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

например вот этот

типо там автоматически await подставился?
в котлине вообще нету async/await потому что это сделали лучше

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

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

Google
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
чет они в 5 версии все поменяли(
Ну там да, новые пакеты, по другому в гредле (плагин нужен)

но вообще есть возможность запускать junit4 тесты и junit5. vintage кажется пакет называется, в доке есть описание

Alexey
30.03.2018
11:16:15
и ты будешь читать? https://github.com/Kotlin/kotlinx.coroutines https://github.com/Kotlin/kotlin-coroutines
В конечном итоге это приводит вот сюда https://github.com/Kotlin/kotlin-coroutines/blob/master/kotlin-coroutines-informal.md Правильно же?

Руслан
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
soft keyword / safe keyword
В чем смысл soft keywords? Зачем было их изобретать?

Руслан
30.03.2018
11:25:21
В чем смысл soft keywords? Зачем было их изобретать?
никогда не хотелось в джаве назвать переменную long? :)

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

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

Konstantin
30.03.2018
11:26:06
В чем смысл soft keywords? Зачем было их изобретать?
ну типа такие ключевые слова не жестко заданы, а трактуются в зависимости от контекста

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

Roman
30.03.2018
11:35:25
в функциональных языках придумали do-нотацию
А императивных языка придумали писать последовательно код, одна строчка за другой. Это и есть do-нотация.

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

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

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 неплохо работает как библиотечные функции)

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

Google
Dmitry
30.03.2018
12:40:22
Экстрасенсы в бой
https://gist.github.com/Jaguarhl/bb8e3a0a06d6d049794a97dfac95a0bd

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

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

Ivan
30.03.2018
12:42:35
Пиши @jbaruch
Он научит юзать нексус лучше всех

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://gist.github.com/Jaguarhl/bb8e3a0a06d6d049794a97dfac95a0bd
https://ru.stackoverflow.com/help/how-to-ask

А конкретнее https://ru.stackoverflow.com/help/mcve

Dmitry
30.03.2018
13:09:54
не изменять ничего из разных потоков, смотреть в сторону JMM
) в общем, твой ответ, как всегда, в точку. спасибо!

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

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

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
Тогда не слишком критично, думаю

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