Как разделить действительно длинный матч на enum со многими вариантами? - PullRequest
0 голосов
/ 18 января 2020

Какова обычно лучшая практика - разбивать действительно длинное совпадение на перечисление с десятками вариантов для обработки, каждый с десятками или сотнями строк кода?

Я начал создавать вспомогательные функции для каждый случай и просто вызвать эти функции, передавая в полях перечисления (или как они там называются). Но, кажется, немного избыточно иметь MyEnum::MyCase{a,b,c} => handle_mycase(a,b,c) много раз.

И если это лучшая практика, можно ли деструктурировать MyEnum::MyCase непосредственно в параметрах этой вспомогательной функции, несмотря на то, что технически это опровержимо , так как реально я уже знаю, что я звоню с правильным случаем?

1 Ответ

0 голосов
/ 18 января 2020

Может быть, ящик enum_dispatch поможет вам.

IIR C, на высоком уровне: предполагается, что все ваши варианты enum реализуют черту с функцией handle_mycase. Затем handle_mycase может быть вызван непосредственно в enum и отправлен в конкретную структуру.

...