如何在埃菲尔铁塔中即时铸造
How to instant casting in eiffel
我在某些功能的 do~end 范围内有以下代码:
add (tempA, tempB)
此处参数类型为:
tempA: A
tempB: B
两者都声明为局部变量。
并且,这是功能添加的原型:
add (a: A; b: B)
我得到的编译错误:
Formal argument type: Generic #1
Actual argument type: detachable Generic #1
如何将 "tempA" 和 "tempB" 的类型从可分离的通用类型即时转换为通用类型?这样我就可以通过它们来添加功能。
我不会更改原型,但我可以更改 "tempA" 和 "tempB" 的类型。
在初始化之前,局部变量被视为可分离的。它们可以通过给它们赋值来初始化
tempA := exprA -- exprA should return a value of type A
tempB := exprB -- exprB should return a value of type B
(例如 exprA
可能是相关特征的正式参数)或直接创建对象:
create tempA
create tempB
(可能有创建过程,如有必要,即 create tempA.make ...
)。
我在某些功能的 do~end 范围内有以下代码:
add (tempA, tempB)
此处参数类型为:
tempA: A
tempB: B
两者都声明为局部变量。
并且,这是功能添加的原型:
add (a: A; b: B)
我得到的编译错误:
Formal argument type: Generic #1
Actual argument type: detachable Generic #1
如何将 "tempA" 和 "tempB" 的类型从可分离的通用类型即时转换为通用类型?这样我就可以通过它们来添加功能。
我不会更改原型,但我可以更改 "tempA" 和 "tempB" 的类型。
在初始化之前,局部变量被视为可分离的。它们可以通过给它们赋值来初始化
tempA := exprA -- exprA should return a value of type A
tempB := exprB -- exprB should return a value of type B
(例如 exprA
可能是相关特征的正式参数)或直接创建对象:
create tempA
create tempB
(可能有创建过程,如有必要,即 create tempA.make ...
)。