8

mファイルでローカル関数を定義しています。例えば:

% begining of public_function.m file
function fh = public_function( )
%
% do some computation...

fh = @local_function; % return function handle to local function defined below

function y = local_function( x )
% 
% a local function inside public_function.m file
% 

% some manipulation on x
y = x;

% end of public_function.m file NOTE THAT local_function is NOT nested

local_functionここで、 (からではなく)コマンドラインから呼び出したいと思いますpublic_function。から返された関数ハンドルを使用してこれを行うことができましたpublic_function

>> fh = public_function(); % got handle to local_function
>> y = fh( x ); % calling the local function from command line :-)

私の質問:
コマンドライン(または他のmファイル/関数)からローカル関数を呼び出す他の方法(関数ハンドルを明示的に渡す以外)はありますか?

より正確には、ファイル内の任意のローカル関数にアクセスするメソッドが必要です(名前がわかっている場合)。したがって、public_function.mファイル(および関数)があり、それがそのファイルに対してローカルであることがわかっている場合、コマンドラインからアクセスする方法はありますか?local_functionlocal_function

4

1 に答える 1

5

公式ドキュメントには次のように書かれています。

...コマンドラインまたは他のファイルの関数からローカル関数を呼び出すことはできません。

これによると、mファイルの外部で間接的に呼び出すことができるようにするには、呼び出し元にハンドルを渡す必要があります。そうでなければ、ローカル関数にアクセスするための文書化された賢明な方法はないと思います。

奇妙なことに、あなたはまだこれを行うことができますhelp

help public_function>local_function
于 2013-03-17T16:10:48.360 に答える