Eiffel: Как получить класс объекта Void?Является ли это возможным? - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть объект void, который я объявил, но хочу получить имя его класса, возможно ли это ??

item: detachable DB_ENTITY

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

Создание этого не то, что я хочу ...

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Я бы использовал

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 четко сообщает, что она не ожидает присоединения, но существует кактолько ссылка на тип привязки.При использовании статической ссылки, на которую указал Алекс, история теперь ясна и кратка.: -)

0 голосов
/ 25 сентября 2018

Объект типа (т. Е. Объект, подобный объекту, возвращенному 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".

...