Eiffel:如何获取 Void 对象的 class?可能吗?

Eiffel: How to get class of a Void object? is it possible?

我声明了一个空对象,但想获取它的 class 名称,可以吗??

item: detachable DB_ENTITY

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

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

类型对象(即类似于 generating_type 为现有对象返回的对象)可以使用花括号括起类型名称来获得:

    {MY_TYPE}

在您的示例中,如果 item 是一项功能(detachable DB_ENTITY 类型以允许值 Void),则它将是 {attached like item},或者 {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".

我会用

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”清楚地表明它不希望被附加,而只是作为类型锚点引用存在。与亚历克斯指出的静态参考一起使用,故事现在清晰简洁。 :-)