Почему Фобос использует enum
для определения констант? Например, в std.math:
enum real E = 2.7182818284590452354L;
Почему бы не использовать глобальный неизменный
? Каковы преимущества / недостатки enum
перед неизменяемым
?
В общем, для вещей, которые являются константами времени компиляции, а не константами времени выполнения, нет никаких недостатков в использовании перечисления, и у него есть преимущества, заключающиеся в том, что ваши намерения абсолютно ясны и немного более эффективны.
Редактировать: еще один вариант использования перечислений может помочь компилятору устранить неоднозначность в отношении того, должна ли функция оцениваться во время выполнения или во время компиляции. Если результат функции назначен неизменяемой
переменной стека, функция будет оцениваться во время выполнения. Если вы используете enum
в той же области, результат будет оцениваться во время компиляции.