Команда info Существует в Tcl возвращает ошибку - PullRequest
0 голосов
/ 09 октября 2018

Я написал следующий код в itcl

if {[info exists ::xtg::triggers::match$arg]} {
    eval delete object ::xtg::triggers::match$arg 
}

, этот код должен проверить, существует ли объект имени :: xtg :: triggers :: match $ arg, и удалить его, если он существует.Проблема в том, что я получаю следующую ошибку в моей оболочке: "команда" match0 "уже существует в пространстве имен" :: xtg :: Triggers "", а не 1 или 0, как написано в руководстве info, существует команда.

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 09 октября 2018

info exists проверяет существующие переменные, а не команды (включая команды объекта).

Попробуйте:

if {[info commands ::xtg::triggers::match$arg] ne ""} {
     # ...
}

Вы также можете рассмотреть Itcl'sinfo objects:

if {::xtg::triggers::match$arg in [info objects]} {
     # ...
}

или

if {[info objects ::xtg::triggers::match$arg] ne ""} {
     # ...
}

(при условии, что вы звоните [info objects] для правильной области имен)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...