|
![]() |
#1 |
Участник
|
можно сократить число внутренних переменных в необъектной реализации.
правда не уверен, что код станет быстрее из-за дополнительной сборки мусора. X++: #define.FIZZ(3) #define.BUZZ(5) static void FizzBuzzImpl(Args _args) { int i; str state; ; for (i = 1; i <=100; i++) { state = ""; if ((i mod #FIZZ) == 0) { state += "Fizz"; } if ((i mod #BUZZ) == 0) { state += "Buzz"; } info(strfmt("%1 %2", state, i)); } } Но как пример использования неконстант в case - очень даже ничего. |
|
![]() |
#2 |
Участник
|
Не очень понял что именно сложно найти, вроде все ветви в одном месте, хотя когда он становится большим, читать такой код не очень приятно, согласен.
|
|
![]() |
#3 |
Участник
|
|
|
![]() |
#4 |
Участник
|
Цитата:
X++: switch (noYesValue) { case NoYes::No : // ... break; case NoYes::Yes : // ... break; default : throw error(Error::unsupportedEnumValue(noYesValue)); } X++: public static LabelType unsupportedEnumValue(anytype _enumValue) { return strfmt(@"Значение %1 (%2) не поддерживается", _enumValue, any2int(_enumValue)); } |
|
|
За это сообщение автора поблагодарили: Stitch_MS (2). |
![]() |
#5 |
Участник
|
|
|
![]() |
#6 |
Участник
|
Цитата:
Вспомнилось в legacy из 2.5, в которой не было полноценных абстрактных классов, Датские программисты похожим образом имитировали абстрактные методы, когда в теле метода принудительно выбрасывали исключение с сообщением что "Метод должен быть перекрыт". И ничего, как-то наверное жили со всем этим. |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|