eiffel:任何默认的语义
eiffel: semantic of ANY default
惊讶 class ANY
中的默认设置是 frozen 和 without 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
的值是通过调用设置 item
的 X.default_create
进行初始化。因此,不需要 default
正文中的指令。
总而言之,default
returns
Void
引用类型;
- 不重新定义扩展类型的默认值
default_create
,包括基本类型:False
、0
、0.0
等。如果扩展类型有嵌套属性,它们使用相同的规则递归初始化。
- 否则通过调用
default_create
获得的值。
惊讶 class ANY
中的默认设置是 frozen 和 without 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
的值是通过调用设置 item
的 X.default_create
进行初始化。因此,不需要 default
正文中的指令。
总而言之,default
returns
Void
引用类型;- 不重新定义扩展类型的默认值
default_create
,包括基本类型:False
、0
、0.0
等。如果扩展类型有嵌套属性,它们使用相同的规则递归初始化。 - 否则通过调用
default_create
获得的值。