2

localfunctionsは、m ファイル内のすべてのローカル関数への関数ハンドルを返します。ただし、これはパッケージでは機能しません。たとえば、「am」として保存された次のコードは正常に実行されます。

function fs = a()
    fs = localfunctions;
end

function babo()
end

function hidden()
end

MATLAB コンソールから呼び出されます。

>> a()

ans = 

    @babo  
    @hidden

しかし、「+aaa/bm」としてパッケージ内にある場合、何も得られません:

>> aaa.b()

ans = 

     {}

この動作は十分に文書化されているとは思いません。どうすればこれを克服できますか?localfunctionsパッケージ内のいくつかの機能を単体テストするために使用する必要があり、このためだけにパッケージの外に保持したくありません。

4

2 に答える 2

2

R2013b と R2014a にはバグがあり、localfunctions はローカル関数を含むファイルのパッケージを尊重しません。このバグは、将来のリリースで修正するために The MathWorks に報告されています。

それまでは、Amro の回避策が最善の選択肢です。

編集: これはリリース R2014b で修正されました。

于 2014-08-28T13:33:53.820 に答える