169 похожих чатов

Проникся идеей HKD и уже хочется часть существующих case-class-ов генерализировать

под HK-тайп-параметр, но вот вопрос - можно ли как-то без бойлерплейтных методов сохранить дефолтные значения для случая c Id[_]? Может, есть какие-нибудь хитрости?

17 ответов

15 просмотров

генерализовать дата классы - плохая идея. вот бы кто макрос @hkd написал, который бы делал двойника да набор трансформаций и утилитарных операций..., да еще плагин к идее (по мотивам extension libraries) чтобы это все идейка прозрачно видела.

Я обычно делаю алиас, для него - объект компаньон, а в нем еплай з дефолтными значениями. Но это в лоб, можно и либу придумать на самом деле

Ivan-Klass Автор вопроса
Ivan-Klass Автор вопроса
Vitalii Honta
Я обычно делаю алиас, для него - объект компаньон,...

Да, может чуть красивее, чем придумывать имя для метода внутри компаньона HKD. Хотя смысл тот же - продублировать метод под Id[_] :)

Ivan Klass
А почему плохая, интересно?

потому что hkd - это паттерн, а датакласс - нерушимая и простая основа. мода - она приходящая и уходящая, и постоянно трансформирующаяся. с первого раза ничего путного и законченного не сделаешь, нужно проявлять достаточную гибкость. вот даже в твоем предложении кусок - "хочется ЧАСТЬ существующих" - непрозрачно намекает, что ты не готов к такому полномасштабному рефакторингу - и правильно. кто будет потом обратно рефакторить? где грань когда одно становится выгоднее другого? за чей счет банкет? кто вернет тебе упущенное время? поэтому выгоднее иметь @hkd и автоматические трансформации. И тогда можно экспериментировть безболезненно

Ivan-Klass Автор вопроса
Mikhail S
потому что hkd - это паттерн, а датакласс - неруши...

часть, потому что где-то это не нужно и только ID используется

Ivan Klass
часть, потому что где-то это не нужно и только ID ...

и как же ты сумел однозначно провести грань, чтобы гарантированно не ошибиться? приписать @hkd - дело секундное, а ручками приписывать - это знаешь ли уже не спринт, а бег как минимум на средние дистанции, а ростом проекта того и гляди перейдет в длинные и марафонские...

Ivan-Klass Автор вопроса
Mikhail S
и как же ты сумел однозначно провести грань, чтобы...

у меня не руки чешутся что-то модное попробовать, а именно есть уже проблема дублирования и недостатка типизации в рамках одного подпроекта

гипотетически можно пройтись макросом и сделать реализацию какого-то trait HKDDefault[Data[f[_]]]{ def default: Data[Option] } на базе собранных значений и дальше цеплять её вместе с остальными как @derive(Craft, Names, HKDDefault) case class Foo[F[_]](...)

Ivan Klass
у меня не руки чешутся что-то модное попробовать, ...

Сложно дискутировать, когда человеку рассказываешь про светлое будущее, а он тебе говорит, что у него вчерашние щи прокисли.

Ivan-Klass Автор вопроса
Mikhail S
Сложно дискутировать, когда человеку рассказываешь...

Так когда кушать пора, а щи прокисли, не до дискуссий про будущее

Ivan Klass
Так когда кушать пора, а щи прокисли, не до дискус...

Если не думать о завтрашнем дне, то прокисшие щи так и будут нормой жизни

Ivan-Klass Автор вопроса
Oleg ℕižnik
гипотетически можно пройтись макросом и сделать ре...

да, думал нечто подобное, но тут снова в макросы упирается. Ещё думал может что-то типа аннотации @idDefault(value) для поля, и тоже макросом их собирать

Oleg ℕižnik
можно, например, не дискутировать

Осталось это в правила группы добавить

Ivan Klass
да, думал нечто подобное, но тут снова в макросы у...

я у себя без макроса просто объявил такой совсем неимплиситный val default = Foo[Option](...)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта