如何在埃菲尔铁塔中即时铸造

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 ...)。