@kotlin_lang

Страница 585 из 982
Kirill
15.03.2018
12:54:10
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
у туплов есть кардинальная проблема, они не отражают смысла аргументов
Слышал, что Бреслав думает над тюплами, которые был до 1.0 “с именоваными полями”, но пока это только мысли.

Vladislav
15.03.2018
12:57:02
Слышал, что Бреслав думает над тюплами, которые был до 1.0 “с именоваными полями”, но пока это только мысли.
Как бы ему подсказать, чтобы он всерьез задумался над этим. Прямо очень нужная фича

Его тут в чате нет?

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
датаклассы — это hashCode/equals/toString/componentN. Причём тут кортежи вообще?
Я к тому, что раз уж засахариваем, чтобы было всё удобненько, то вот то что я написал +1 к удобству

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
вообще сложно представить зачем нужны эти анонимные классы как выше показали
Ну, к примеру, вот у меня сейчас: fun sendCode(phone: String): LocalDateTime Не понятно что значит возвращаемое значение? так ведь? А если написать так: fun sendCode(phone: String): { nextAllowedSendDate: LocalDateTime } То становится уже понятней

Sergey
15.03.2018
13:04:13
тайп алисы можно заюзать

ну либо функцию назвать понятнее)

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
(а потом меня уволят за NDA)
давай сюда сразу сорцы, мы сами погрепаем ;)

Kirill
15.03.2018
13:11:09
)))

всего новых файлов: 26631 жесть... вы в коде не теряетесь?
или я сделал что-то не так, или на 30к коммитов всего 180 уникальных коммитеров

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

Quantum Harmonizer
15.03.2018
13:13:21
Google
Kirill
15.03.2018
13:14:43
или я сделал что-то не так, или на 30к коммитов всего 180 уникальных коммитеров
но вообще первое время было тяжело искать нужный код. открываеш search everywhere и как в гугл ключевые слова вводишь, а тебе классы нужные ищутся ))

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
Дата классы в Котлине победили кортежы. История вопроса здесь: https://blog.jetbrains.com/kotlin/migrating-tuples/
А почему победили, где об этом почитать? Мне вот кажется, что надо было их не закапывать а наоборот дополнить типы именами (по сути получится анонимное описание класса) Как-то так: fun doSmth(): {message: String, error: String} { return object { "lala", "all fine" } } PS. Ну синтаксис, конечно, может быть другой...

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
val (result, error) = callFunc()
тебе в golang chat :)

Sergey
15.03.2018
13:42:03
тебе в golang chat :)
не ну не эксепшены же бросать)

да и в примере на слайде такое было

Quantum Harmonizer
15.03.2018
13:43:22
не ну не эксепшены же бросать)
ну не проверять же error != null

Sergey
15.03.2018
13:43:32
?

иногда бывает полезно. например вернуть массив ошибок валидации

или два значения из функции

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{} блок базового класса вызовется раньше, чем завершится конструктор дочернего

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