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

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

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

17 ответов

9 просмотров

генерализовать дата классы - плохая идея. вот бы кто макрос @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](...)

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

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

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
Коллеги, доброе утро. Запустил на удаленном хосте приложение (ручками зашел туда по ssh и запустил, не командой удаленно). Создал потом ssh-туннель, и с моей машины приложение...
Δημήτηρ
9
Карта сайта