
Igor
16.09.2018
11:55:59

Quantum Harmonizer
16.09.2018
12:15:56
У кого-нибудь сломался буфер обмена в последней IDEA EAP?

OlegKrikun
16.09.2018
12:31:30
Толко мне не хватает возможности передать кортеж в метод? типа: fun do(value: (String, Int, ...))

Quantum Harmonizer
16.09.2018
12:31:45

Google

OlegKrikun
16.09.2018
12:31:58
да у меня уже даже Five определён
вот хотелось бы без вот этого всего

Roman
16.09.2018
12:32:10
Напиши data class строчкой выше и читатели твоего кода скажут тебе спасибо

Quantum Harmonizer
16.09.2018
12:32:19
ext.kotlin_version = '1.3-M2'
...
maven { url 'https://dl.bintray.com/kotlin/kotlin-eap/' }
Could not find org.jetbrains.kotlin:kotlin-stdlib:1.3.0-rc-6.
ЧЯДНТ?

Roman
16.09.2018
12:32:50
Не надо экономить сточку кода на data class. Понятность кода превыше всего

Quantum Harmonizer
16.09.2018
12:33:18

OlegKrikun
16.09.2018
12:33:28

Mi
16.09.2018
12:33:40

OlegKrikun
16.09.2018
12:34:05

Andrew
16.09.2018
12:34:32

Roman
16.09.2018
12:34:40
Да и сам себе скажешь спасибо, если назовешь, ибо человеческий мозг так устроен что ему проще оперировать понятиями у которых есть какие-то имена. Поэтому люди и называют все предметы и явления вокруг себя. Без имен нельзя ими манипулировать

Bogdan
16.09.2018
12:36:56

Google

Roman
16.09.2018
12:37:51

Quantum Harmonizer
16.09.2018
12:38:46

Mi
16.09.2018
12:39:08

OlegKrikun
16.09.2018
12:39:12

Quantum Harmonizer
16.09.2018
12:39:29

Mikhail
16.09.2018
12:39:40

Mi
16.09.2018
12:39:50
сразу хочется начать холивар

OlegKrikun
16.09.2018
12:40:15

Andrew
16.09.2018
12:40:51

Boris
16.09.2018
12:40:59
Иногда кортежи хорошо играют, когда например есть большая цепочка мапредьюс то из одной фазы в другую иногда приходится передавать совершенно неназываемые наборы

Quantum Harmonizer
16.09.2018
12:41:21

Roman
16.09.2018
12:41:26
Я бы и Pair выпилил. Очень редко в реальной жизни приходится манипулировать парой элементов с названиями first и second. Чаще всего, если где и возникает пара, то у элементов этой пары есть какие-то более подходящие имена.

Mikhail
16.09.2018
12:41:30

Roman
16.09.2018
12:41:56
Вот для того и нету, чтобы вот этого всего не было

Quantum Harmonizer
16.09.2018
12:42:21

OlegKrikun
16.09.2018
12:42:36

Roman
16.09.2018
12:43:04
Даже используя Pair и Triple можно написать абсолютно непонятный стороннему читателю код (я лично видел), но так хотя бы масштаб того, что можно наворотить, сильно ограничен

Andrew
16.09.2018
12:43:37

Google

Quantum Harmonizer
16.09.2018
12:43:50

Andrew
16.09.2018
12:44:13

Roman
16.09.2018
12:44:47
Тут вопрос в приоритех. Мой опыт говорит, что читаемось и понятность кода намного важней лишнего класса в 99.99% случаев. А если у вас какой-то экзотический очень performance-critical случай, то может лучше вообще на C писать.

Boris
16.09.2018
12:45:24
Это не повод делать кортежи, но надо признать, что такой кейз есть

Quantum Harmonizer
16.09.2018
12:46:20

Roman
16.09.2018
12:47:02
А зачем деструктурировать? Ну вот практические никогда же не бывает "просто пара". Если вдуматься, то навреняка выясниться что это какая-то сущность и можной её дать имя, и хранить её в переменной и работать с ней номрально. Приведите пример, вместе разберем что это за сущность и как её назвать
А еще, на практике, такая сущность редко встречается только в одном месте.

OlegKrikun
16.09.2018
12:47:51

Mikhail
16.09.2018
12:47:55

Quantum Harmonizer
16.09.2018
12:48:13

Mikhail
16.09.2018
12:48:26
Без надобности придумывать с потолка названия для промежуточных стадий данных

Roman
16.09.2018
12:49:02
А можно и весьма понятный
Это очень сложно. Чтобы было понятно надо вагоны документации писать или давать длинные имена методам типа getSomethingAndSomethingElse

Boris
16.09.2018
12:49:44
Такою пару никак не назвать, это просто чтобы было оба значения

Mikhail
16.09.2018
12:51:11

Quantum Harmonizer
16.09.2018
12:51:51
Rx — это вообще вершина запутанности кода :)

Roman
16.09.2018
12:51:56
Ой... ой.. Это очень больной способ программирования, извните. Он совсем не трансформируется на длинные цепочки пробразований. А вдруг вам понадобиться что-то что было в начале цепочки? Теперь будет добавлять еще один элемент в кортеж на каждом этапе. Да, вот отсюда действительно торчит желание иметь кортежи, но так не надо вообще писать код

Mikhail
16.09.2018
12:52:11
Я против того чтобы возвращать Pair или Triple из метода, но во всяких обобщенных функциях работают только обобщенные структуры

Quantum Harmonizer
16.09.2018
12:52:11

Google

Bogdan
16.09.2018
12:52:22

Boris
16.09.2018
12:53:48

Roman
16.09.2018
12:53:53

Quantum Harmonizer
16.09.2018
12:54:09

Mikhail
16.09.2018
12:54:34
Окей, хорошо, для туплей нельзя использовать ComponentN, а для паттерн-матчинга?

Roman
16.09.2018
12:55:06
Да всё понятно про Spark и про big data. Хотите правильно distributed вычисления — придется платить удобством и читабельностью кода. Только не надо эти приемы применять там, где они не нужны

Quantum Harmonizer
16.09.2018
12:55:26

Bogdan
16.09.2018
12:55:43

Admin
ERROR: S client not available

Mikhail
16.09.2018
12:56:19
можно написать Pattern, работающий с CompoentN и оператор .contains() и получить красивенкую
when (user) {
in User("johnDoe", any()) -> ...
in User(any(), 13) -> ...
else -> ....
}

Quantum Harmonizer
16.09.2018
12:56:51
write-only

Roman
16.09.2018
12:57:09
Не надо вам pattern matching. У вас есть strongly typed language with nominal type system and flow sensitive typing. Пользуйтесь.
Это вам не Erlang и даже не JS.

Quantum Harmonizer
16.09.2018
12:57:23
сравни с
when {
user.name = "johnDoe" -> ...
user.age == 13 -> ...
else -> ...
}

Boris
16.09.2018
12:57:40

Mikhail
16.09.2018
12:57:42

Roman
16.09.2018
12:58:09

Mikhail
16.09.2018
12:59:44
но вообще да, PM без destructive declaration все равно будет недостаточно приятным, чтобы предпочесть его

Roman
16.09.2018
13:00:03
Как только возникает желание где-то в цепочке сделать tupple это сразу сигнал что надо переделать на comprehensions/builder стиль

Google

Roman
16.09.2018
13:01:39
Цепные преобразование (filter/map/...) удобны только пока они делают шаблонные, простые задачи. Как только возникет сложная задача, то, даже если её решение и можно упихнуть в такой стиль, то результат будет очень трудно понять. Не надо так делать
Используйте возникающие в промежуточных этапах кортежи как сигнал что надо остановиться и подумать то ли вы вообще делаете

Igor
16.09.2018
13:04:24
Roman а вы не знаете, не ли планов (запросов) - добавить в компилятор флажочек, что бы у data классов НЕ генерировался toString()? (это иногда важно, по секьюрити причинам).

Quantum Harmonizer
16.09.2018
13:05:03

Mikhail
16.09.2018
13:05:12

OlegKrikun
16.09.2018
13:05:32
я думаю он знает как решить эту проблему

Quantum Harmonizer
16.09.2018
13:05:35
...или не использовать data-классы

Igor
16.09.2018
13:05:38

Mikhail
16.09.2018
13:06:44
и там что то вроде if(isDebug) { super.toString} else {"мы на продакшене, тут не на что смотреть"}
а не

Igor
16.09.2018
13:07:47

Mikhail
16.09.2018
13:07:48
из делегата же нет доступа

Quantum Harmonizer
16.09.2018
13:08:08

Mikhail
16.09.2018
13:08:18

Igor
16.09.2018
13:09:24

Roman
16.09.2018
13:09:39

Igor
16.09.2018
13:10:34

Mikhail
16.09.2018
13:10:36
ASM - оно как Tuple. Если тебе вдруг будет лень что-то делать и ты решишь воспользоваться ASM, то огребаешь код, который нельзя прочесть и отдебажить, потому что до байтвейвинга его не существует

Igor
16.09.2018
13:11:07

Mikhail
16.09.2018
13:11:15
из делегата же нет доступа