eiffel:任何默认的语义

eiffel: semantic of ANY default

惊讶 class ANY 中的默认设置是 frozenwithout implementation???, 什么是这个函数的语义??

Class任何

frozen default: detachable like Current
        -- Default value of object's type
    do
    end

我的意图是定义一个 default: like Current 或可拆卸的 returns 当前 Class 的默认值,因此 重新定义 它。 ..

这是类型的可分离版本的默认值。对于引用类型,这是 Void。对于扩展类型,这是相应的默认值,即用 default_create 初始化的值。例如,对于 BOOLEAN,它是 False

如果扩展的 class 提供了 default_create 的特定实现,即使在 default 中没有主体,它也用于初始化 Result。例如,考虑 class

expanded class X inherit ANY redefine default_create end feature
    item: INTEGER_32
    default_create do item := 42 end
end

对于 X 类型的变量 x,表达式 x.default.item 将给出 42。当调用 default 时,Result 的值是通过调用设置 itemX.default_create 进行初始化。因此,不需要 default 正文中的指令。

总而言之,default returns

  • Void 引用类型;
  • 不重新定义扩展类型的默认值default_create,包括基本类型:False00.0等。如果扩展类型有嵌套属性,它们使用相同的规则递归初始化。
  • 否则通过调用default_create获得的值。