Создание пакетов приложений с несколькими пакетами и ссылками в Mathematica - PullRequest
3 голосов
/ 06 апреля 2011

Я создаю пакет приложений в Mathematica.Приложение содержит несколько пакетов и ссылается на другие пакеты приложений

Чтобы все настроить, я использовал и следовал инструкциям пакетов приложений в разделе справки рабочего места, которое также доступно по адресу: http://reference.wolfram.com/workbench/index.jsp?topic=/com.wolfram.eclipse.help/html/tasks/applications/introduction.html вподраздел Пакеты и приложения , но ...

  1. Я реализовал и протестировал пакеты приложений для одного пакета, и все они работают нормально.
  2. Мои несколько пакетови приложение в настоящее время не работает нормально из-за следующих выявленных проблем: a) основной пакет приложения вызывает функции, реализованные в дополнительных пакетах, но эти функции, похоже, там не распознаются.Я пытался даже явно вызывать их в основном пакете, используя команду Needs в начале пакета, но безрезультатно.* Что я делаю не так? * Все дополнительные пакеты находятся в папке приложения в соответствии с указаниями справки.Более конкретно:

Основной пакет и приложение называются OptMainFuncAll`, поэтому основной пакет OptMainFuncAll.m начинается с

BeginPackage["OptMainFuncAll`"]

Дополнительные пакеты IntermFunct.m и VolCandExt.mначинаются с:

BeginPackage[ "OptMainFuncAll`IntermFunct`"]
BeginPackage[ "QuadOptMainFuncAll`VolCandExt`"]

Тем не менее, функции, определенные в IntermFunct.m и VolCandExt.m: unknown при вызове в OptMainFuncAll.m - Что я делаю не так?

Я даже пытался явно объявить

Needs[ "OptMainFuncAll`IntermFunct`"]
Needs[ "QuadOptMainFuncAll`VolCandExt`"] 

в начале OptMainFuncAll.m, и это не решило мою проблему

ВКроме того, я сделал ссылку на второй пакет приложения (BasicSym) и верстак показывает его как на него ссылаются, но его функции также кажутся неизвестными в OptMainFuncAll.m.

Я также попытался начать OptMainFuncAll.m с

  BeginPackage[{OptMainFuncAll`, BasicSym`}]

и это не сработало;консоль во время выполнения возвращает сообщение:

BeginPackage :: cxt: недопустимый контекст, указанный в позиции 1 в BeginPackage [{OptMainFuncAll , BasicSym}].Контекст должен состоять из допустимых имен символов, разделенных и заканчивающихся на `.EndPackage :: noctx: предыдущий контекст не определен.

Я уверен, что совершил какую-то глупую ошибку разработчика пакета приложения, но, похоже, я не могу приложить к этому руку.

Если вы можете просто сообщить мне точные объявления пакетов в BeginPackage [?] Для основного пакета, дополнительные пакеты и ссылочные пакеты с именами, которые я здесь предоставил, чтобы все работало гладко, я был бы очень признателен.

1 Ответ

4 голосов
/ 06 апреля 2011

Пожалуйста, попробуйте:

BeginPackage["OptMainFuncAll`",
      {"BasicSym`",
       "OptMainFuncAll`IntermFunct`",
       "QuadOptMainFuncAll`VolCandExt`"}
]

Текущее имя пакета является первым аргументом, а второй аргумент является списком имен пакетов (контекстов), от которых оно будет зависеть.

...