如何在埃菲尔铁塔即时施法

时间:2017-10-28 05:00:05

标签: eiffel

我在某些功能的最终范围内有以下代码:

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”的类型。

1 个答案:

答案 0 :(得分:2)

在初始化之前,局部变量被视为可拆卸。可以通过为它们赋值来初始化它们

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