埃菲尔:如何获取Void对象的类?可能吗?

时间:2018-09-25 18:37:21

标签: eiffel

我有一个声明的空对象,但是想要得到它的类名吗?

item: detachable DB_ENTITY

db_connection.base_selection.query("SELECT * FROM " + item.generating_type.out)

创建它不是我想要的...

2 个答案:

答案 0 :(得分:1)

可以使用大括号将类型名称括起来来获得类型对象(即,由generating_type返回的对象,例如现有对象):

    {MY_TYPE}

在您的示例中,如果{attached like item}是一项功能(类型为item以允许值detachable DB_ENTITY)为Void,或者为{DB_ENTITY} item是一个局部变量,因此整个表达式将以下列方式之一读取:

  db_connection.base_selection.query("SELECT * FROM " + ({attached like item}).out)
  db_connection.base_selection.query("SELECT * FROM " + ({DB_ENTITY}).out)

在第二种情况下,相应的字符串将等效于"SELECT * FROM DB_ENTITY"

答案 1 :(得分:0)

我会用

item_type_anchor: detachable DB_ENTITY
          -- `item_type_anchor' for Current.

然后

db_connection.base_selection.query ("SELECT * FROM " + ({like item_type_anchor}).generating_type.out)

这意味着功能“ item_type_anchor”清楚地表明它不希望附加,而是仅作为类型锚引用存在。与Alex所指出的静态参考一起使用,现在的故事清晰而简洁。 :-)