代码之家  ›  专栏  ›  技术社区  ›  Pipo

埃菲尔:参照其他类常量设置常量

  •  0
  • Pipo  · 技术社区  · 7 年前

    如何设置一个常数引用埃菲尔铁塔中的另一个类常数?

    不幸的是,这样的东西无法编译

    Default_log_level: like {MY_LOGGER}.log_level = {MY_LOGGER}.Log_level_info
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   Alexander Kogtenkov    7 年前

    在当前版本的Eiffel中,无法使用其他常量属性定义常量属性。

        2
  •  2
  •   Eric Bezault    7 年前

    常量属性只能由清单常量构成,但可能的解决方法是使用冻结一次函数:

    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 说明)。