Почему пространство имен с пустыми скобками используется в пакетах - PullRequest
2 голосов
/ 01 марта 2012

У меня есть пакет TEX.

package require ABC
package provide TEX 1.0

namespace eval ::65FGA {

}

proc ::65FGA::runSuite {{setupFile ""} args} {
Proc body
proc body
}

Я не понимаю, почему используется пространство имен с пустыми скобками ..

Ответы [ 2 ]

5 голосов
/ 01 марта 2012

Это может быть просто вопросом стиля:

namespace eval ::my_namespace {}
proc ::my_namespace::procname {} {...}

против

namespace eval ::my_namespace {
    proc procname {} {...}
}
3 голосов
/ 01 марта 2012

Вы имеете в виду, что

namespace eval ::65FGA {

}

немного

Эта команда просто создает пространство имен "65FGA", а затем eval использует пустую строку (пустой скрипт, если это звучит более разумно для вас). В результате указанное пространство имен создается, но в нем еще ничего нет.

В этом коде вы можете удалить обсуждаемый вызов команды, и он ни на что не повлияет. Следовательно, скорее всего, он служит для повествовательной цели, заявляя, что пакет создает указанное пространство имен (которое затем заполняется как минимум одним proc edure).

ОБНОВЛЕНИЕ: Удар через ложное утверждение (спасибо Эрику Мельски). Действительно, пространство имен должно существовать до того, как будет предпринята попытка создать в нем что-либо (с помощью команд proc или set).

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