
Жабра
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 сравнивать

Жабра
04.10.2018
08:48:22

Quantum Harmonizer
04.10.2018
08:48:28

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
можно пример вызова такого цепочного экстеншена?

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

Quantum Harmonizer
04.10.2018
08:57:34

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
А тайпклассы это всё-таки немного другое, это про абстракцию не через наследование

Quantum Harmonizer
04.10.2018
09:11:06

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

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

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

dimiii
04.10.2018
09:18:49

Quantum Harmonizer
04.10.2018
09:18:59

Alexander
04.10.2018
09:19:21
Миксины - это тоже вариант имплиситов. Пробовал в Groovy, не понравилось
Смысл в том, что миксины, как и тайп-классы добавляют поведение в существующий класс. Экстеншеный и контексты добавляют повделение не в сам класс, а в окружение, в котором он существует. Разница принципиальная

dimiii
04.10.2018
09:22:55

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

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

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

Google

Bogdan
04.10.2018
09:26:37

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

Egor
04.10.2018
09:27:03

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'

Andrew
04.10.2018
09:35:25

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

Google

Sergey
04.10.2018
09:35:54

dimiii
04.10.2018
09:36:09

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

Quantum Harmonizer
04.10.2018
09:37:59

Egor
04.10.2018
09:38:34

Andrew
04.10.2018
09:40:09

Konstantine
04.10.2018
09:40:52

dimiii
04.10.2018
09:41:31

Egor
04.10.2018
09:41:43

Митко Соловец?
04.10.2018
09:42:53

Жабра
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

Quantum Harmonizer
04.10.2018
09:44:32

Жабра
04.10.2018
09:44:55

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

eshch
04.10.2018
09:45:11