Атрибуты константы могут быть сделаны только из константы манифеста, но возможный обходной путь может заключаться в использовании замороженных разовых функций:
frozen Default_log_level: INTEGER
once
Result := {MY_LOGGER}.Log_level_info
ensure
definition: Result = {MY_LOGGER}.Log_level_info
end
frozen
означает, что его нельзя переопределить в классах-потомках (например, константе).Атрибуты).
К сожалению, тип функций once
не может полагаться на привязанные типы, поэтому использование INTEGER
вместо like {MY_LOGGER}.log_level
.
И, наконец, недостаток этогоРешение заключается в том, что его нельзя использовать там, где ожидаются постоянные атрибуты (например, в инструкциях inspect
).