Существует два обычно рекомендуемых способа загрузки пакета.Одним из них является так называемый публичный импорт, и в ваших настройках это будет сделано как
BeginPackage["package2`",{"package1`"}]
(* Usage messages etc *)
Begin["`Private`"]
(* code here *)
End[]
EndPackage[]
Здесь вы указываете имя контекста пакета, который вы хотите загрузить, в списке, который является вторым необязательным аргументом.до BeginPackage
.Этот способ импорта называется общедоступным, поскольку загруженный пакет останется на $ContextPath
после загрузки основного пакета и, следовательно, будет общедоступным.
Второй метод называется частным импортом и схематически выполняетсяas
BeginPackage["package2`"]
(* Usage messages etc *)
Begin["`Private`"]
Needs["package1`"]
(* code here *)
End[]
EndPackage[]
В этом методе ваш загруженный второй пакет будет доступен только для пакета, который его загружает (с Needs
), таким образом, частный импорт.
Какой способ вам понадобится, зависит от ситуации.Я пытаюсь сделать весь свой импорт частным, если я не должен делать его публичнымОднако для отладки может быть удобно сначала выполнить публичный импорт, поскольку тогда вы можете поиграть со вторым пакетом непосредственно на верхнем уровне.
Что касается безопасности, вы можете загрузить пакет любымколичество пакетов, и это будет безопасно.Когда вы одновременно загружаете несколько пакетов в один и тот же контекст, это будет безопасно, если у этих пакетов нет открытых символов с одинаковым коротким именем.В противном случае вы столкнетесь с так называемой проблемой слежки, но лучше всего приложить усилия, чтобы этого избежать (это всегда возможно).