2014-10-17 1 views
0

Я пишу скрипт (разрешает вызов main.m), который вызывает функцию, которую я написал (назовем ее myfunc.m). Кажется, у меня есть несколько из этих функций myfunc.m в разных местах на моем пути MATLAB.Ограничить MATLAB для вызова функций из той же папки, что и работающий файл

Я хотел бы как-то ограничить использование Matlab только в той же папке, где мой класс main.m, при поиске пользовательских функций.

Так, например, если у меня есть в

C:\example\main.m 
C:\example\myfunc.m 

и

C:\asd\main.m 
C:\asd\myfunc.m 

и открыть main.m в папке example, когда речь идет о вызове myfunc.m, он может только вызвать функцию в папка C:\example\. То же самое происходит, если я запустил main.m в папке C:\asd\.

Надеюсь, это имеет смысл, спасибо.

+0

Почему бы не использовать обычный путь, не включая ненужные папки? – Cheery

+0

Привет, в настоящее время это невозможно, потому что мне нужны разные версии этого же файла функций для другого кода (глупый, я знаю, но его только, как я это сделал сейчас), поэтому я хотел бы выбрать файл на случай в случае основы. –

+0

Затем создайте функцию, которая обновит ваш путь на основе версии необходимой вам функции. Когда вам нужно вызвать функцию из другой папки, обновите путь, и функция будет вызываться оттуда. – Cheery

ответ

3

В краткосрочной перспективе, довольно быстрое решение было бы для Вас, чтобы сделать ваши myfunc.m файлы в частных функций, которые вперед с точки зрения приоритета по сравнению с обычными функциями, и может быть вызвана только функциями в одной и той же материнской компании папка.

Просто поместите myfunc.m файлов в папке private:

C:\example\main.m 
C:\example\private\myfunc.m 

и

C:\asd\main.m 
C:\asd\private\myfunc.m 

Теперь example\private\myfunc.m является вызываемым только вещами в папке example и \asd\private\myfunc.m является вызываемым только вещами в папка asd. Кроме того, они имеют более высокий приоритет, чем другие функции, поэтому вы можете гарантировать, что правильный вызов всегда будет вызван.

В более долгосрочной перспективе вы можете воспользоваться некоторыми другими более обширными способами, которые MATLAB обеспечивает для управления конфликтами пространства имен, таких как подфункции, объектно-ориентированное программирование и пакеты.

Подфункции чрезвычайно просты в использовании. Пакеты вовсе не сложны, но требуют немного подумать о том, как организовать свой код (что обычно стоит того). OO-программирование - это гораздо большее изменение в типичном стиле программирования, но для более крупных приложений очень важно.

+0

Спасибо, не знали о параметрах частной папки. Я прочитаю об этом и некоторые другие моменты, которые вы упомянули. –

Смежные вопросы