2

「which」を使用してパッケージ内の .m ファイルを見つけようとしましたが (失敗しました)。たとえば、Company.m が +Contents フォルダー内にある場合、"which('Company.m')" を呼び出します。

したがって、現在のフォルダーが C:\Users\Documents\Contents (Matlab パスに追加されたパス) の場合、"which('Company.m')" はファイルが見つからないことを示しますが、現在のフォルダーが C:\Users*** の場合\Documents\Contents\ +Contents の場合、場所がわかります。

どうしてこれなの?「which」コマンドはすべてのサブディレクトリを再帰的に検索すると思いましたか? 'Company.m' のパス名を取得する方法はありますか? 特にそのフォルダーにソースを指定する必要はありませんか?

4

1 に答える 1

1

それは次のようになります。

which Contents.Company

どのパッケージに含まれているかが事前にわからない場合 (または 1 つのパッケージに含まれている場合) は、それらすべてをインポートできます。

import Contents.*
import OtherPackage.*
which -all Company

それでも満足できない場合は、利用可能なすべての最上位パッケージのリストを取得し、それらが公開しているメソッドから必要な機能を検索できます。

 %# warning: this might take more than a few seconds
 p = meta.package.getAllPackages;
 b = cellfun(@(pkg) ismember('Company',{pkg.FunctionList.Name}), p);
 idx = find(b, 1, 'first');
 p{idx}.Name
于 2012-05-25T01:15:50.443 に答える