Matlab で記述されたコードを、スタンドアロンのコンパイル済み Matlab アプリケーションに変換しようとしています。ただし、いくつかの奇妙なエラーが発生した後、同じ名前の関数が複数回使用されている (ただし結果/計算が異なる) という事実を回避するために、コードがパスへの追加と削除を多用していることに気付きました。調べてみると、名前の前に「+」を付けることでフォルダーをパッケージに変えることができ、そのパッケージ内の関数がname_of_folder.name_of_function
. これで名前空間の問題は解決しますが、多くの作業が必要になる可能性があります。つまり、各関数呼び出しの先頭に正しいパッケージを追加する必要があるためです (そして、多くのファイルを複製しなければならない場合もあります)。
それから関数を見たのでimport
、時間を節約できることを願っています。必要なパッケージを 1 つまたは 2 つの特定の関数に渡し、それらの関数にパッケージをインポートさせると、それらの関数が呼び出す関数がそのインポート ステートメントのスコープに収まる場合、思い通りに動作するようになると思います。たとえば、次のように設定した場合
function foo(var1, var2, ..., packagename)
eval(sprintf('import %s.*', packagename));
...
bar1(var1, var2);
...
bar2(var2);
...
次に、インポートステートメントでインポートされたパッケージを使用することを望んbar1
でいます。bar2
ドキュメントには、条件と関数のインポートステートメントはそのコードブロックに限定されていると書かれていますが、「そのコードブロック」がテキストのみを意味するのか、それとも「そのコードブロック」がコードと評価されるすべてのものであるのかはわかりません結果として。前者のような気がしますが、後者であることを期待して質問させてください。
では、import ステートメントのスコープは何ですか? あるいは、この問題に対処する別の方法はありますか?