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

Passing anonymous object of derived class to a routine in Eiffel

提问人:Eleno 提问时间:4/26/2020 更新时间:4/26/2020 访问量:54

问:

假设我们有:

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

f (a_a: A) ...

那么,你能在不使用临时变量的情况下编写类似于以下伪代码的东西吗?

-- `y` is an argument to B's constructor.
f (create B.make(y))
构造函数 Eiffel Anonymous-Objects

评论


答:

2赞 Alexander Kogtenkov 4/26/2020 #1

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

create {B}.make (y)

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