@kotlin_lang

Страница 973 из 982
Alexey
23.10.2018
17:36:32
Воооот, вот об этом я и говорил
Ну я еще добавил матчинг по образцу в ролях

Google
Alexey
23.10.2018
17:38:01
Ну вобщем, основной кейс это конечно разбор разных ADT

Andrey
23.10.2018
17:40:19
Ну про какой паттерн матчинг вообще речь, если сейчас даже деструктуризация для полей дата класса не реализована? То есть, если одним из полей дата класса является объект другого дата класса, то надо сначала внешний деструктурировать, достать при этом поле, а потом уже поле деструктурировать.

Egor
23.10.2018
17:41:50
Ну если будет пат мат, то наверное и деструктуризация доедет сама собой
Но это не точно. Она же сейчас работает через функции вида componentN

Alexey
23.10.2018
17:42:08
Такое можно и без патмата норм изобразить
Ехал ифчик через ифчик, видит ифчик ифчик ифчик

Vladimir
23.10.2018
17:43:32
Ехал ифчик через ифчик, видит ифчик ифчик ифчик
Ну не, парочка when и val. И смотреться будет не хуже.

Egor
23.10.2018
17:44:16
Ну не, парочка when и val. И смотреться будет не хуже.
Но зачем, когда в мире существует патмат

Что мы, варвары что-ли?

Anna
23.10.2018
17:44:36
Чтобы запилить паттерн матчинг, нужен паттерн матчинг ?‍♀️

Boris
23.10.2018
17:44:54
Ехал ифчик через ифчик, видит ифчик ифчик ифчик
Ну или использовать богомерзкое ООП ?

Vladimir
23.10.2018
17:45:45
Но зачем, когда в мире существует патмат
Так можно про многое сказать. Хотелок у всех хватает, только неизвестно что получится, если это всё впихнуть в язык.

Boris
23.10.2018
17:46:13
Впрочем, сейчас такое в приличном обществе не предложишь, забросают канделябрами

Google
Egor
23.10.2018
17:47:06
Кстати, сейчас чекнул свой эликсирный код. Вот вам ещё один юзкейс - парсинг жсона, без аннотаций и вот этого всего. А? А? А?

Vladimir
23.10.2018
17:47:18
Ну или использовать богомерзкое ООП ?
Вот да, где эти времена, когда switch считался не очень, ибо есть полиморфизм

Konstantin
23.10.2018
17:47:41
не парсингом единым жив программизд

Egor
23.10.2018
17:49:02
не парсингом единым жив программизд
А что делать, если приходится. Глядишь, так и от ретрофита+рх+гсон/моши уйдем на ведрах

Konstantin
23.10.2018
17:50:07
куда уходить та, мне и так норм например. это ж просто инструменты. "как надоели все эти молотки, плоскогубцы, отвертки, давайте уйдем от них и перейдем на другой инструмент"

на какой

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

чтобы что то понять как с инструментом работать )

Egor
23.10.2018
17:51:57
На более прогрессивный, например? Вон, все жалуются, что Рх сложный, не для того и вообще оверхед. Есть другой вариант - корутины, ну а если переходишь на корутины, то там и до ручного парсинга недалеко ?

Bogdan
23.10.2018
17:52:26
Andrey
23.10.2018
17:52:41
Вот да, где эти времена, когда switch считался не очень, ибо есть полиморфизм
switch и сейчас не очень. Только он был и есть не очень не потому, что полиморфизм, а потому, что он плохо реализован в C / C++ / Java

Bogdan
23.10.2018
17:54:08
— ненулевое количество юзкейсов есть — вреда фича не приносит
2-е сомнительное, люая вича дает возможность писать по другому, и дает возможность человеку который не сильно эту фичу понимает, накостылять

Egor
23.10.2018
17:54:48
рх сложный первые 10 проектов, потом полегче
Да это не мне рассказывать надо, а коммьюнити, которое на корутины массово мигрирует

Egor
23.10.2018
17:55:36
И правда ?

Google
Bogdan
23.10.2018
17:56:25
Неправда ваша
что 80% людей пишушие сервера работают удаленно ? я не про опенсорс, человек про работу спрашивал

Andrey
23.10.2018
17:57:15
Плюс про Haskell особо тереть нечего. Там всё то, за что тут холиварят, есть, и даже больше.

Boris
23.10.2018
17:57:29
Кстати, сейчас чекнул свой эликсирный код. Вот вам ещё один юзкейс - парсинг жсона, без аннотаций и вот этого всего. А? А? А?
Думаю паттернмпчинга нет потому что это целый комплекс изменений языка, очевидность необходимости наличия которых под сомнением

Bogdan
23.10.2018
17:57:48
был доклат от Тагира - "Патернматчинг и его воображаемые друзья"

првда там джава

Alexander
23.10.2018
18:00:04
https://openjdk.java.net/jeps/305

dimiii
23.10.2018
18:01:34
https://openjdk.java.net/jeps/305
Лулзово будет, если в java с их новой моделью релизов PM выкатят раньше

Alexander
23.10.2018
18:02:11
Бреслва черным по белому гововрил, что подолждет, пока Java соберет грабли, потом будет решать, добавлять ли это в котлин

Andrey
23.10.2018
18:02:18
можно накостылять везде
Ну можно какой-нибудь пример, как паттерн матчингом можно злоупотребить настолько, что аж больно будет? Бремя доказательства, если что, лежит на утверждающем наличие некоторого свойства.

Egor
23.10.2018
18:02:39
Лулзово будет, если в java с их новой моделью релизов PM выкатят раньше
Это действительно довольно забавно, кто-кого пересидит в плане осторожности добавления фич

Alexander
23.10.2018
18:03:46
Судя по jep-у, они пока просто клонируют котлиновский синтаксис для констант, а что-то более сложное в бесконечно отдеаленном будущем.

dimiii
23.10.2018
18:04:51
Boris
23.10.2018
18:06:15
А вот не помню, обсуждали ли тут поддержку котлином тру иммутабельности?

Andrey
23.10.2018
18:06:40
А вот не помню, обсуждали ли тут поддержку котлином тру иммутабельности?
Что есть тру иммутабельность и в чём её отличие от не тру?

Egor
23.10.2018
18:07:05
Однажды мальчик спросил маму: "Мама, а если всем дружно попросить Бреслава не добавлять тернарь в Котлин, его не добавят?" Вместе с мамой плакала половина чата. Бреслав, не добавляй тернарный оператор!

Boris
23.10.2018
18:07:06
Или как в расте

Google
Andrey
23.10.2018
18:07:43
Ну, аля const в цпп
Не знаю цпп и раст настолько, чтобы понять, о чём вы.

Kirill
23.10.2018
18:07:52
что 80% людей пишушие сервера работают удаленно ? я не про опенсорс, человек про работу спрашивал
Я бэкендер-удалёнщик, например. На котлин, по соседству есть проекты на джаве. Когда искал работу, искал именно удалёнку. Выбор есть. На том же хэдхантере сбрасываешь регион и выбираешь тип занятости "удалённая работа". Вакансий достаточно. Не дохера, но хватает

Boris
23.10.2018
18:08:27
Ну модификатор, который декларирует неизменяемость и гарантирует её

Egor
23.10.2018
18:08:52
Неизменяемость чего? Ссылки?

Boris
23.10.2018
18:09:41
Нет, не только ссылки, конечно. Для ссылки есть вал

Alexander
23.10.2018
18:10:45
Вложенных объектов

Boris
23.10.2018
18:11:48
Т.е. пишешь что на вход приходит иммутабл, это гарантирует компилятор и например позволяет использовать в многопоточном коде без синхронизации

Egor
23.10.2018
18:11:57
Тогда обсуждали

Boris
23.10.2018
18:13:02
Alexey
23.10.2018
18:16:13
Т.е. пишешь что на вход приходит иммутабл, это гарантирует компилятор и например позволяет использовать в многопоточном коде без синхронизации
В свете интеропа с джавой как в расте точно не получится, ибо нет гарантий что какая нибудь либо его не смутирует

Но есть же val и он вполне даёт гарантии если все вложенные структуры тоже иммутабельны

Igor
23.10.2018
18:32:38
Ребят, как detekt сказать, что мне надо прочекать N конкретных файлов, а не все в папке?

jordan
23.10.2018
18:33:28
Привет всем

Где можно найти годный материал по котлину на русском?

Kirill
23.10.2018
18:34:26
Плюс про Haskell особо тереть нечего. Там всё то, за что тут холиварят, есть, и даже больше.
Да ладно, non-total семантика, типы, зависимые от значений, автодоказательства, вот это всё

Не знаю цпп и раст настолько, чтобы понять, о чём вы.
const в плюсах означает, что поля объекта класса по умолчанию иммутабельны. Дефолт можно перекрыть ключевым словом mutable

Хотя не совсем так... давно с плюсами работал. Уже не помню точно всего, что там вокруг const навёрнуто

Igor
23.10.2018
18:40:00
dimiii
23.10.2018
18:42:37
Нашел. Там через ; или , перечислять надо после -i
Скинь решение подробнее, пожалуйста. Как именно вызываешь

Alexander
23.10.2018
18:43:50
const в плюсах означает, что поля объекта класса по умолчанию иммутабельны. Дефолт можно перекрыть ключевым словом mutable
В плюсах сделать иммутабельный объект не реально. Нет контроля в компайл тайме. Поля могут ссылаться на изменяемые объекты.

Google
Andrew
23.10.2018
18:44:13
Т.е. пишешь что на вход приходит иммутабл, это гарантирует компилятор и например позволяет использовать в многопоточном коде без синхронизации
Как будто в крестах const что-то гарантирует. В методе, помеченном const, успешно пишется T* self = const_cast<T*>(this) (для тех, кто не знаком с крестами — в const-методах сам this имеет тип T const* const, то бишь константный указатель на константый объект, но const_cast позвляет снимать и навешивать это на своё усмотрение, хоть и считается плохим тоном) и он начинает творить страшное. И это даже не всегда UB, ЕМНИП.

Kirill
23.10.2018
18:44:14
Ну, как минимум можно объявить аргумент метода const. И по сигнатуре будет видно: вот, этот чувак обязуется мой объект за мякотки не щупать

Alexander
23.10.2018
18:45:03
Ну это все и в котлине сейчас есть. Проблема исключительно с изменяемостью вложенных типов. В С++ не решается в принципе, в котлине в принципе можно проверкой времени комилляции

Igor
23.10.2018
18:46:38
Скинь решение подробнее, пожалуйста. Как именно вызываешь
Как-то так ? private fun runDetekt() { val kts = getChangedFiles(".kt") val args = listOf( "-c", "detekt-config.yml", "-i", kts.joinToString(separator = ";") ) io.gitlab.arturbosch.detekt.cli.main(args.toTypedArray()) } private fun getChangedFiles(extension: String): List<String> = Runtime.getRuntime() .exec("git diff --diff-filter=AM --name-only HEAD") .inputStream.bufferedReader().readLines() .filter { it.endsWith(extension) }

Andrew
23.10.2018
18:47:19
Ну в джаве есть не менее жуткий рефлюкшен, например. Почти всегда оставляют лючок на всякий случай. Gson тот же плевать хотел, что поле private final
Дык о том и речь, что гарантий не будет, а есть ли без них смысл лепить [nearly] true immutability — не ясно.

Kirill
23.10.2018
18:50:03
Ну, я пока не слышал о каких-то ограничениях в любом ЯП, которые накладываются прям жёстко и без возможности обойти. Обычно это решается по-другому - на любой const_cast или что-то подобное приходится оправдываться на код-ревью (у вас же есть код-ревью?)

Alexander
23.10.2018
18:50:22
Дык о том и речь, что гарантий не будет, а есть ли без них смысл лепить [nearly] true immutability — не ясно.
Смысл есть. Если ломается только нелегальными операциями, то и фиг с ним, нечего такие операции делать.

Kirill
23.10.2018
18:52:08
Через do-нотацию можно сымитировать "изменяемое" состояние. Но только сымитировать

Alexander
23.10.2018
18:53:31
А в хаскеле разве можно обойти иммутабельность?
В хаскеле нет состояния, ломать нечего.

Alexey
23.10.2018
18:53:59
В хаскеле нет состояния, ломать нечего.
Ну я это привёл как пример строгого ограничения ЯП

Kirill
23.10.2018
18:54:14
https://en.wikibooks.org/wiki/Haskell/do_notation



Немного похоже на "пиши на джаве как на питоне" )

(я вот про эту жуть:



Alexey
23.10.2018
18:55:41
я знаю что такое do нотация, я спрашивал про иммитацию мутабельного состояния

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