Есть ли какой-то недостаток для многократного вызова addlath в MATLAB? - PullRequest
4 голосов
/ 10 февраля 2012

Мои вопросы, если addpath похож на #include в C. В C, если вы не добавите #include guard (#ifndef ...), будет несколько определений функции. Но, похоже, MATLAB решает эту проблему.

Я использовал эту схему, чтобы не вызывать addpath много раз:

try
    f(sample args);
catch err
    addpath('lib');
end

Но теперь я думаю, что в этом нет необходимости.

Ответы [ 2 ]

5 голосов
/ 10 февраля 2012

#include добавляет специальный заголовочный файл . addpath просто добавляет папку в путь поиска и не добавляет никакого кода в вашу программу. Думайте об этом как о добавлении каталогов для поиска файлов заголовков в C ++ (например, в Visual Studio это «Дополнительные каталоги включения» и g ++, это реализовано с -I).

Кроме того, я думаю, addpath проверяет, была ли папка уже добавлена, так что вы действительно ничего не делаете с повторными вызовами addpath('lib').

3 голосов
/ 11 февраля 2012

Несколько вызовов addpath не создают несколько функций, поэтому с точки зрения правильности не возникает проблем с использованием addpath несколько раз.

Однако addpath является относительно медленной операцией,Вы не должны вызывать его внутри функции, которая может вызываться много раз во время нормальной работы.


Edit:

Кроме того, вместо того, чтобы полагаться на try / catch для проверки текущего состояниявашего пути, вы можете проверить путь напрямую.Смотрите примеры здесь: https://stackoverflow.com/a/8238096/931379.

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