私は最近同様の問題に遭遇し、パッケージに対して次の解決策を見つけました。しかし、それは非常にハッキーです。
オプションの引数を使用して、importthisという関数を作成します。
function to_eval = importthis(exclude_list)
if nargin == 0
exclude_list = [];
end
var_name = genvarname('A', exclude_list); %avoid shadowing
to_eval = ['[~,'...
, var_name...
, ']=fileparts(fileparts(mfilename(''fullpath'')));'... %get containing dir
, 'eval([''import '','...
, var_name...
, '(2:end),''.*'']);'... %remove '+'
, 'clear '... %clean up
, var_name
];
end
この関数はeval
、「this」パッケージをインポートする文字列を返します。したがって、パッケージ関数では、次のように上部に配置します。
function B = myfunc(A)
eval(importthis);
%function body
end
関数の名前空間をクリーンなままにwho
して、に渡すこともできます。importhis
function B = myfunc(A)
eval(importthis(who));
%function body
end
自分のやったことに誇りを持っているのか、それとも混乱しているのかを判断することはできません。