@kotlin_lang

Страница 836 из 982
Sergey
29.08.2018
04:33:00
наоборот companion object {} object Creator {}

Igor
29.08.2018
04:44:02
наоборот companion object {} object Creator {}
Еще ваpиант нашелся: companion object { @JvmField val CREATOR = object: ... }

Andrew
29.08.2018
06:32:38
Кому там литералов для массивов не хватает? :D https://twitter.com/marcinmoskala/status/1007640373970329600

Alexander
29.08.2018
06:45:33
Интересное решение

Google
Alexander
29.08.2018
06:45:54
Для карт можно тоже самое сделать

Хотья я уже привык к listOf/arrayOf

Заморачиваться за форму скобочек - совершенно не прдуктивно

Andrew
29.08.2018
06:54:52
Да и очевидность этого L[...] другим разработчикам слегка сомнительно. Но решение занятное.

Alexander
29.08.2018
06:56:38
Я вообще заметил, что с котлиной можно делать некоторые совершенно неожиданные вещи. Чего только одно переопределение invoke на строках стоит.

Чего-то я не поял. Как явным образом использовать KClass в common модуле? Я могу его получить как ...::class , но почему-то не могу объявить переменную такого типа...

Andrew
29.08.2018
06:59:25
Ещё б неочевидный unary plus в DSL не нужен был — вообще было бы идеально :)

Alexander
29.08.2018
06:59:59
С типом Т

Почему-то uresolved reference

Andrew
29.08.2018
07:00:22
import kotlin.reflect.KClass?

У меня в common-модуле вполне хорошо себя чувствует class Ref<T: Any>(var ref: T?, val type: KClass<out Any>)

Alexander
29.08.2018
07:01:16
Да, уже сделал. После того как руками импорт прописал, все увидело

Google
Alexander
29.08.2018
07:01:24
Видимо какой-то глюк идеи

Ещё б неочевидный unary plus в DSL не нужен был — вообще было бы идеально :)
Нужен какой-то способ объекты в выражения конвертирвоать. Я тоже об этом думал, но ничего без извратов не придумал

Andrew
29.08.2018
07:02:31
Возможно, у меня тоже с импортами в common-модулях странности бывали. Хотя я и native-часть в идее пишу, где вообще кроме базовой подсветки синтаксиса ничего не работает, и ничего, жить можно...

Костя
29.08.2018
07:31:37
Всем привет! Кто может подсказать в чем разница, если она есть между map и flatMap у kotlin.collections ? по описанию методов разницы никакой нет

Igor
29.08.2018
07:32:24
Да ладно, там даже сигнатуры разные. flatMap это по сути map + flatten

Костя
29.08.2018
07:35:09
ну заметил разницу что при использовании map мы получим преобразованную коллекцию с таким же колличеством элементов, при flatMap может быть и другое

Andrew
29.08.2018
07:35:10
Т.е. .map о соответствии 1 к 1, .flatMap — 1 к 0..*

Костя
29.08.2018
07:38:49
только у тебя в примере ошибка в коллекции последней

[1, 2, 2, 4, 3, 6]

будет такая в итоге

Andrew
29.08.2018
07:39:41
Верно, туфту написал. Но суть, я надеюсь, ясна осталась.

Костя
29.08.2018
07:39:50
да, спасибо

Vadim
29.08.2018
08:01:30
читаю следующий код: fun onViewClick(viewId: Int, viewTag: Int?) { when (viewId) { R.id.expandCollapseActionView -> onExpandClick() R.id.reportButton -> contract.showContactSupport() else -> viewTag?.let { onContactClick(contacts.getOrNull(it)) } } } И не могу понять условие else то есть если пользователь нажмёт на любой какой то другой viewId вызовется метод onContactClick при условии если viewId типо существует? или как?

Vadim
29.08.2018
08:06:24
Костя
29.08.2018
08:07:24
то да

Google
Костя
29.08.2018
08:07:27
вызовется клик

Vadim
29.08.2018
08:09:09
осталось только посмотреть, кому этот listener назначается
вы имеете в виду setOnClickListener? ну так вьюшкам внутри фрагмента

Maxim
29.08.2018
08:10:20
вы имеете в виду setOnClickListener? ну так вьюшкам внутри фрагмента
ну так вот при клике на все эти вьюхи, кому он назначен, и будет вызываться тот самый метод, который ты написал изначально

Konstantine
29.08.2018
08:12:01
ну по вьюхам клик понятен, но не понятно само условие else которое было в методе
В любом случае, когда id не null и не expandCollapseActionView исполнение пойдет в else.

Что тут не понятно?)

Andrew
29.08.2018
08:12:11
вы имеете в виду setOnClickListener? ну так вьюшкам внутри фрагмента
Вероятно, кто-то наивно посчитал, что в метод может прилететь ограниченное количество id-шников, потому вместо последнего R.id.contactButton -> написал else -> (ибо компилятор ругался, что очень нужен else). По-хорошему, конечно, это исправить бы на when (viewId) { R.id.expandCollapseActionView -> onExpandClick() R.id.reportButton -> contract.showContactSupport() R.id.contactButton -> viewTag?.let { onContactClick(contacts.getOrNull(it)) } else -> Log.e("Unable to process $viewId") } (офк, это слепое предположение)

Konstantine
29.08.2018
08:12:40
else -> viewTag?.let { onContactClick(contacts.getOrNull(it)) }
Если tag не null, то выполняется onContactClick

Vadim
29.08.2018
08:13:46
Если tag не null, то выполняется onContactClick
то есть по сути при вызове метода таким образом presenter.onViewClick(5, 7) вызовется onContactClick()?

Andrew
29.08.2018
08:14:15
И то верно.

Maxim
29.08.2018
08:15:46
то есть по сути при вызове метода таким образом presenter.onViewClick(5, 7) вызовется onContactClick()?
но я надеюсь, ты никогда так не сделаешь, чтобы вызвать открытие контакта

Vadim
29.08.2018
08:16:21
но я надеюсь, ты никогда так не сделаешь, чтобы вызвать открытие контакта
пишу тесты, поэтому этот кейс мне как бы тоже нужно было покрыть

но я надеюсь, ты никогда так не сделаешь, чтобы вызвать открытие контакта
это ж ок практика держать всю логику в презентере и через контракт общаться с фрагментом

Maxim
29.08.2018
08:20:26
и чем плохо вызов контракта то?)
для тестов - не могу тебе подсказать тебе, как лучше использовать. Для реальной жизни - тебе нужно либо повесить listener на вью, которые должны вызывать это действие, либо дергать другой метод контракта, но ни в коем случае не presenter.onViewClick(5, 7)

Konstantine
29.08.2018
08:34:03
Alexander
29.08.2018
09:19:51
В чем именно вопрос? Как это реализовать на конкретной платформе или как организовать структуру данных для обработки автозамены?

Google
Alexander
29.08.2018
09:21:28
Я не уверен, что это в этот чат, разве что у кого-то есть много времени писать код за кого-то. Тем более не сказано, что за платформа.

Admin
ERROR: S client not available

Alexander
29.08.2018
15:08:22
Вот читаю я интервью @relizarov , которое в Daily Kotlin всплыло. Заинтересовал момент про overhead на копирование стэка в корутинах. В какой момент этот overhead возникает. Положим, я делаю на корутине какую-то сильно тяжелую задачу, я его заплачу один раз или на каждый resume? И вообще какой масштаб?

Мы сейчас делаем симулежку для частиц и там есть несколько вариантов. Как основной рассматриваем корутины. Вопрос насколько мелко можно дробить задачи, чтобы не сильно много терять на переключени контекстов, и вообще можно ли это делать на корутинах?

Dmitry
29.08.2018
15:17:29
@noraltavir можно ссылочку на интервью? Что-то не вижу в твитере дейли котлин.

Alexander
29.08.2018
15:17:45
я про канал здесь в телеграме

ссылка вот: https://habr.com/company/jugru/blog/421607/

Alexander
29.08.2018
15:27:17
Мы с аспираном делали какие-то синтетические тесты, там на микрозадачах была эффективность в районе 70-80% Чего-то найти не могу. Но не понятно, с чем это связано, с корутинами или с накладными расходами в друго месте

Не могу найти, кануло куда-то в недра слака

Alexander
29.08.2018
15:36:07
Я тоже не думаю. В действительности, на сложно ветвящихся задачах корутины могут и прибыль давать если там диспансер умный

Igor
29.08.2018
15:46:35
@noraltavir можно ссылочку на интервью? Что-то не вижу в твитере дейли котлин.
https://t.me/TheDailyKotlin Господа, не стесняемся - подписываемся ??

Vladimir
29.08.2018
15:59:11
ссылка вот: https://habr.com/company/jugru/blog/421607/
Спасибо, очень интересно

balolam
29.08.2018
15:59:12
Всем привет, ни у кого нет проблем при повышении версии Kotlin до версии 1.2.61 в Android проекте?

balolam
29.08.2018
16:01:55
Все ванги в отпуске.
Удачно... Но мне интересно да/нет, были ли проблемы со сброкой проекта? (java.lang.Exception: RemoteException occurred in server thread; nested exception is:)

Google
balolam
29.08.2018
16:19:20
Хммм, ? у меня тоже есть такие ошибки
Не, у меня именно когда я повышаю версию Kotlin с 1.2.51 до 1.2.61

Alexander
29.08.2018
16:27:45
Дочитал. @relizarov большой уважамс. Очень приятно читать. И JetBrains тоже уважамс. Попросился бы к вам работать (ибо энтузиазм есть), да боюсь что отчественная физика не оценит.

Alexander
29.08.2018
16:30:51
Для стажировок я старый. Аспиранта пошлю если что. Но вообще я сейчас на физтехе раскручиваю идею использования котлины как языка для научного программирования (вместо питона). В весеннем семестре спецкурс будет. Если JB захочет порекламировать - я счастлив буду.

Galia
29.08.2018
16:46:28
А в каком возрасте уже поздно на стажировки?

Alexander
29.08.2018
16:48:15
Да. Мы в основном на котлине пишем что-то более сложное, где нужна нормальная производительность и типы, но пока я работал над этим "сложным", мне пришла в голову мысль, что практически все базовые вещи, что можно делать на питоне в смысле обработки и визуализации, можно также легко делать на котлине

А в каком возрасте уже поздно на стажировки?
Когда за ради стажировок не отпускают с работы :)

Galia
29.08.2018
16:56:53
Когда за ради стажировок не отпускают с работы :)
Понятно) значит, тем кто без работы можно)

Alexander
29.08.2018
16:58:19
Я не знаю позицию JB, но вообще самое классное время на мой взгляд (как преподавателя и научного руководителя) - это последние курсы ВУЗа и первые годы аспирантуры (это если физика, если не физика и не надо бегать от армии, то не понятно зачем аспирантура).

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