
Kirill
15.03.2018
12:54:10

Igor
15.03.2018
12:54:15

Vladislav
15.03.2018
12:54:30
у туплов есть кардинальная проблема, они не отражают смысла аргументов

Sergey
15.03.2018
12:54:50
делаешь датакласс чуть выше функции и юзаешь его

Google

Vladislav
15.03.2018
12:55:02

Тимур
15.03.2018
12:55:06

Sergey
15.03.2018
12:55:41

Vladislav
15.03.2018
12:56:21
А туплы в принципе порочная практика, код с ними становится не читаемым

Igor
15.03.2018
12:56:24

Vladislav
15.03.2018
12:57:02
Его тут в чате нет?

Sergey
15.03.2018
12:57:31
его и в слаке даже сложно поймать

Quantum Harmonizer
15.03.2018
12:57:35

Sergey
15.03.2018
12:58:05

Quantum Harmonizer
15.03.2018
12:58:18
Кортежи осознанно выброшены в ранних версиях — можно предположить, что их больше не будет.

Vladislav
15.03.2018
12:58:19
Ну а зачем датаклассы ввели, обычных классов не хватает? Вот тут такой же случай. Я считаю раз уж пошла такая пляска, так надо не останавливаться

Google

Sergey
15.03.2018
12:58:20
хотя вот будет Kotlin Night в Киеве и целый час QA сессии с Бреславом сразу
можно поспрашивать
почему нет такого и будет ли

Quantum Harmonizer
15.03.2018
12:58:46
destructuring — единственное, что их объединяет
но он есть и у обычных классов

Sergey
15.03.2018
12:59:18
вообще сложно представить зачем нужны эти анонимные классы как выше показали

Vladislav
15.03.2018
12:59:24

Quantum Harmonizer
15.03.2018
13:00:39
читать код с кортежами — -10 от удобства

Sergey
15.03.2018
13:02:39
fun getCurrentPosition(): {x: int, y: int}
val pos = getCurrentPosition()
pos.x
vs
fun getCurrentPosition(): Pair<Int, Int>
val (x,y) = getCurrentPosition()
vs
data class Position(val x: Int, val y: Int)
fun getCurrentPosition(): Position
val (x,y) = getCurrentPosition()
val position = getCurrentPosition()
position.x
ну в общем
сомнительный профит
слишком субьективный

Vladislav
15.03.2018
13:03:51

Sergey
15.03.2018
13:04:13
тайп алисы можно заюзать
ну либо функцию назвать понятнее)

Quantum Harmonizer
15.03.2018
13:04:39

Vladislav
15.03.2018
13:04:48
Почему мы параметрам функции даем понятные названия, которые должны улучшать читаемость кода, а результату не можем дать имя?

Google

Kirill
15.03.2018
13:05:05
посмотрел последние 30000 коммитов:
всего новых файлов: 26631
новых *.java файлов: 4799
новых *.kt файлов: 1306

Sergey
15.03.2018
13:05:07
потому что имя результата задано в имени функции

Vladislav
15.03.2018
13:05:13
Ну и собственно возможность вернуть более одного значения тут тоже рядом

Sergey
15.03.2018
13:05:20
где-то четверть нового кода на котлине пишется получается

Kirill
15.03.2018
13:06:23
вообще прикольно. я думал что больше

Sergey
15.03.2018
13:06:33
а я думал наоборот меньше в разы)
это с учетом плагинов или без?

Kirill
15.03.2018
13:07:13
нет.
но это с учётом ultimate и IDE на базе идеи

Sergey
15.03.2018
13:07:53
всего новых файлов: 26631
жесть... вы в коде не теряетесь?
а 30к коммитов это какой промежуток времени? больше 2х лет?

Kirill
15.03.2018
13:09:22
до осени 2016

Kirill
15.03.2018
13:09:35
ща ещё погрепаю
(а потом меня уволят за NDA)

Vladislav
15.03.2018
13:11:03

Kirill
15.03.2018
13:11:09
)))

Vladislav
15.03.2018
13:12:48
Хотя этож ява, можно отреверсить... Можешь не скидывать сорцы

Quantum Harmonizer
15.03.2018
13:13:21

Kirill
15.03.2018
13:13:26

Google

Kirill
15.03.2018
13:14:43

James Tiberius Kirk ?
15.03.2018
13:16:58
@HeapyHop

Victor
15.03.2018
13:17:20
Еее

Admin
ERROR: S client not available

James Tiberius Kirk ?
15.03.2018
13:17:31

Roman
15.03.2018
13:18:00
Дата классы в Котлине победили кортежы. История вопроса здесь: https://blog.jetbrains.com/kotlin/migrating-tuples/

Sergey
15.03.2018
13:30:28
@vlad_navrocky вот выше ответили)

Vladislav
15.03.2018
13:34:37

Alexey
15.03.2018
13:35:37

Sergey
15.03.2018
13:37:51
val (result, error) = callFunc()

Quantum Harmonizer
15.03.2018
13:41:45

Sergey
15.03.2018
13:42:03
да и в примере на слайде такое было

Quantum Harmonizer
15.03.2018
13:43:22

Sergey
15.03.2018
13:43:32
?
иногда бывает полезно. например вернуть массив ошибок валидации
или два значения из функции

Vladislav
15.03.2018
13:44:19

Google

Vladislav
15.03.2018
13:44:50
Иногда хочется поименовать возвращаемое значение для наглядности кода

Sergey
15.03.2018
13:45:06
ну я все равно дата классы юзаю для этого
а если они еще и инлайнится будут, то будет хорошо)

Vladislav
15.03.2018
13:47:09
мы же ленивые тут собрались

Sergey
15.03.2018
13:47:31
тогда Pair, без названия)

Vladislav
15.03.2018
13:49:35
Туплы - плохо, я бы на месте разработчиков языка их вообще выкинул
параметры не именованы, ухудшают читаемость кода

Quantum Harmonizer
15.03.2018
13:50:49
да блин, напиши класс одну строку

Alexey
15.03.2018
13:51:34
Туплы с деструктуризацией вполне понятны

Alexandr
15.03.2018
13:52:44

Kamo
15.03.2018
13:53:09
Привет, коллеги. Такой вопрос:
есть базовый класс и его наследники. Я хочу в базовом классе вызвать абстрактные методы после того, как у дочернего класса отработает конструктор. Можно ли как-то в kotlin это сделать?
Я так понял, init{} блок базового класса вызовется раньше, чем завершится конструктор дочернего

Quantum Harmonizer
15.03.2018
13:53:45