将派生 class 的匿名对象传递给 Eiffel 中的例程

Passing anonymous object of derived class to a routine in Eiffel

假设我们有:

class A ...
class B inherit A ...

f (a_a: A) ...

那么,你能不能不使用临时变量,写出类似下面的伪代码?

-- `y` is an argument to B's constructor.
f (create B.make(y))

您正在寻找创作表达。与创建指令不同,它省略了目标实体,但始终指定创建类型:

create {B}.make (y)

注意。 根据经验,如果类型可能与实体混淆,则将其括在花括号中。例如,在短语 create B.make (y) 中,终端 B 被解释为实体名称。将其括在大括号中可将其提升为一种类型。