@kotlin_lang

Страница 907 из 982
Жабра
04.10.2018
08:45:36
Alexander
04.10.2018
08:45:45
Жабра
04.10.2018
08:45:55
Sergey
04.10.2018
08:46:26
попробуйте до EAP обновиться и 1.3RC, в теории нейтив в AS должен быть

Google
Alexander
04.10.2018
08:46:28
+
Если эту штуку сделать, то тут ваааще, тааакой простор открывается... Можно вообще забыть про все неявные костыли и тайп классы

Slava
04.10.2018
08:46:34
ребят, оператор "is" сильно хуже, обычного if с числами?

Quantum Harmonizer
04.10.2018
08:47:19
какой-то сферический вопрос в вакууме, который непонятно зачем пытается сравнить несравнимое

Alexander
04.10.2018
08:47:40
Не понял, что такое if числами?

Slava
04.10.2018
08:47:57
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { val item = mItems[position] when { holder is BigBannerViewHolder -> {

а можно itemViewType сравнивать

Quantum Harmonizer
04.10.2018
08:48:28
а можно itemViewType сравнивать
тогда ещё кастить придётся

Alexander
04.10.2018
08:48:30
Так бы и сказали, что это какой-то дикий андроид

Slava
04.10.2018
08:48:33
во

Alexander
04.10.2018
08:51:54
А что это? Можете на пальцах объяснить?))
Есть просто расширения, когда есть один ресивер, определяется он вне класса. Есть member extension, который определяется внутри класса, у него есть ресивер, но есть еще неявный ресивер виде определяющего класса. Тут важно, что member extension живет и работает только когда запущен в контексте определенного класса. Сейчас не возможно для расширения, заданного глобально, ограничить контекст и задать цепочку ресиверов. С точки зрения языка, это вполне возможно, но технически не реализовано

Что-то вроде infix fun MyDSL.String.to(value: MyFignia){}

Google
Quantum Harmonizer
04.10.2018
08:52:42
https://youtrack.jetbrains.com/issue/KT-10468

Alexander
04.10.2018
08:53:48
Спаибо, я за что-то подобное голосовал, но там была немного другая формулирвка.

Жабра
04.10.2018
08:55:05
Понял, почти.)

Alexander
04.10.2018
08:56:28
Это супер клевая штука. Все думают, что это только для DSL, но на самом деле нет.

Egor
04.10.2018
08:56:31
Что-то вроде infix fun MyDSL.String.to(value: MyFignia){}
даже представить себе не могу, честно говоря, как это должно выглядеть

можно пример вызова такого цепочного экстеншена?

Alexander
04.10.2018
08:57:13
@Harmonizr дал ссылку, там есть примеры

Egor
04.10.2018
08:57:48
а, я понял

Quantum Harmonizer
04.10.2018
08:58:18
class Smth : Supertype { val a = whatever.smth() } fun (Supertype, Whatever).smth() { ... }

Egor
04.10.2018
08:58:31
я почему-то сразу подумал про цепи экстеншенов из трех и больше элементов

Типа fun A.B.C.function(value: Value) { ... }

но это вообще не то, да, я просто улетел

Alexander
04.10.2018
09:06:09
Ну там, где два ,будет и три и больше.

Можно делать вложенные контексты

Синтакс в пропозале ксатати наверное получше, чем тот, о котором я думал. Меньше неоднозначности

Egor
04.10.2018
09:07:31
Вложенные контексты как будто уже перебор

Alexander
04.10.2018
09:07:37
Неа

Зависит от того, что вы хотите сделать.

Google
Alexander
04.10.2018
09:08:40
Я не уверен, но по-моему если это правильно сделать, то это полностью перекрывает use-case type-классов, при этом без всяких имплиситов

Egor
04.10.2018
09:09:57
Ну, если определение мембер экстеншена извне это довольно полезная фича, то определение многоуровневых вложенных контекстов это уже оверинжиниринг. Типа, где такое может понадобиться кроме ДСЛ?

dimiii
04.10.2018
09:10:08
?

Egor
04.10.2018
09:10:45
А тайпклассы это всё-таки немного другое, это про абстракцию не через наследование

Egor
04.10.2018
09:11:13
То что там имплиситы появляются, это сахарная фича

Alexander
04.10.2018
09:12:15
Буду себя рекламировать: https://github.com/altavir/kmath/blob/9031e2443fc1954e811dc051d1e917f137f2a475/kmath-common/src/main/kotlin/scientifik/kmath/operations/Algebra.kt#L41 Вот эту строчку хочется вынести во внешний экстеншн

Quantum Harmonizer
04.10.2018
09:12:58
Например? Плохо понимаю, о чем речь
https://github.com/Miha-x64/reactive-properties/blob/master/sql/src/main/kotlin/net/aquadc/properties/sql/library.kt#L200

Alexander
04.10.2018
09:13:28
Я считаю, что контекстно-ориентированное программирование - это принципиально новая парадигма. На ряду со, скажем, multiple dispatch

OlegKrikun
04.10.2018
09:17:53
за DSL начинают втирать в трансляции

Quantum Harmonizer
04.10.2018
09:18:59
А миксины?
тоже отстой

Alexander
04.10.2018
09:19:21
Миксины - это тоже вариант имплиситов. Пробовал в Groovy, не понравилось

Смысл в том, что миксины, как и тайп-классы добавляют поведение в существующий класс. Экстеншеный и контексты добавляют повделение не в сам класс, а в окружение, в котором он существует. Разница принципиальная

Митко Соловец?
04.10.2018
09:23:28
exposed поддерживает асинхронные драйверы?

Egor
04.10.2018
09:24:38
Другое дело, что имея рюкзачок тайпклассов, можно с имплиситами напихать неявного поведения в другой класс

Alexander
04.10.2018
09:25:42
Под капотом да. Но идейно, это же просто добавление существующему классу поведений, которые делают его квази-наследником интерфейса

Google
Alexander
04.10.2018
09:26:57
Мы уже минут 15 обсуждаем

Egor
04.10.2018
09:27:03
А что это?
class A { fun B.func() { ... } }

Sergey
04.10.2018
09:27:05
Egor
04.10.2018
09:27:26
вот эта func называется Member Extension-ом

Andrew
04.10.2018
09:29:48


OlegKrikun
04.10.2018
09:30:37
Вот я тоже удивлён ? наверное пора опять пробовать kts

Admin
ERROR: S client not available

Жабра
04.10.2018
09:31:33


Andrew
04.10.2018
09:31:49
А я всё жду, когда мультиплатформа (или это был конкретно kotlinx-coroutines, не помню) сдвинется с Gradle 4.7. :(

Руслан
04.10.2018
09:32:13
Да, у меня так же :)

Andrew
04.10.2018
09:32:59
Давно уже. Логично, что ближе к релизу 1.3 замораживают и все новые фичи идут в новую ветку :)

dimiii
04.10.2018
09:33:35
С такой частотой, что меняется синтаксис и api грыдлы - почему бы сразу не описывать сборку программы на жабе и котлине? Те же возможности, та же _так необходимая_ для сборочных скриптов отладка и подсказки.

Egor
04.10.2018
09:33:51
Под капотом да. Но идейно, это же просто добавление существующему классу поведений, которые делают его квази-наследником интерфейса
Строго говоря, нет. Тайпклассы - это натурально "внешнее" поведение класса, так сказать, искусственный контекст. То есть, поведение проявляется только внутри контекста, в отличие от обычного наследования

Sergey
04.10.2018
09:34:08
@HeapyHop можно в самом ктор репосе еще на kts все перекатить?

Andrew
04.10.2018
09:34:28
есть Кобальт
От-то есть, а толку? Развивается примерно никак.

dimiii
04.10.2018
09:35:09
Наши девопсы были бы очень рады разбираться, зачем где - то greetings.set('xx'), а где -то jvmTarget = 'xx'

Sergey
04.10.2018
09:35:29
@dmsol а exposed с джавой нормально работает?

Google
dimiii
04.10.2018
09:36:09
Sergey
04.10.2018
09:36:22
не называйте это девопсом тогда)

Egor
04.10.2018
09:38:34
Звучит как трейты в Rust, не?
за Раст ничего не могу сказать

Andrew
04.10.2018
09:40:09
Наши девопсы были бы очень рады разбираться, зачем где - то greetings.set('xx'), а где -то jvmTarget = 'xx'
По-моему добрые 90% андроид-разработчиков в Gradle не вникают, что о девопсах говорить.

dimiii
04.10.2018
09:41:31
По-моему добрые 90% андроид-разработчиков в Gradle не вникают, что о девопсах говорить.
Собственно вот и ответ на вопрос "Зачем?". Который я пытался сочинить. Для того чтобы контролировать сборку , чтобы с очередным обновлением (ну случается такое) не приходилось переписывать/лазать по SO.

Egor
04.10.2018
09:41:43
Звучит как трейты в Rust, не?
Наверное все-таки нет, как минимум идеологически

Митко Соловец?
04.10.2018
09:42:53
@dmsol а exposed с джавой нормально работает?
Я не проверял, сегодня смотрел спринг кофу и было бы интересно туда запихнуть асинк драйвер и и орм от брэйнсов

Жабра
04.10.2018
09:43:02
Какая версия в градле работает для 1.3-rc? поставил 1.3-rc-57, но не собирается

Alexander
04.10.2018
09:43:47
В смысле не собирается, у меня пока все rc собираются без проблем

Хотя правильный вопрос, что именно собирается?

dimiii
04.10.2018
09:44:29
Жабра
04.10.2018
09:44:55
В смысле не собирается, у меня пока все rc собираются без проблем
У вас какая версия плагина и какая версия прописана в градле?

Alexander
04.10.2018
09:45:05
ругается на reflective access, но он до 5.0 работает

eshch
04.10.2018
09:45:11
Оно и сейчас есть. Подразумевается тип текущего ресивера
я знаю, что сейчас означает такой референс, но хочу я другого

Методрефы прекрасны своей явностью и однозначностью.
возвращаемся на жаву, там как раз надо везде типы указывать, ясно и однозначно

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