| Programming and Data Types | ![]() |
Functionsコマンドで出力されるフィールド
functionsコマンドは、フィールドfunction, type, file、そして、多重定義された関数に対してmethodsをもつMATLAB構造体を出力します。この節では、これらのフィールドについて説明します。
関数名
functionフィールドは、関数ハンドルに対応する関数名を保持するキャラクタ配列です。
typeフィールドは、以下の表の示す5つの文字列のうちの1つを保持するキャラクタ配列です。
| 関数タイプ |
タイプの詳細 |
simple |
非多重定義MATLAB組み込みあるいは、M-ファイル、または、実行されるまでtypeが決定できない関数 |
subfunction |
MATLABサブ関数 |
private |
MATLABプライベート関数 |
constructor |
MATLABクラスのコンストラクタ |
overloaded |
多重定義されたく見込み、M-ファイル関数、あるいはコンストラクタ |
fileとmethodsの2つのフィールドの内容は、関数typeにより異なります。
ファンクションファイル
fileフィールドは、つぎのうちのいずれかを保持するキャラクタ配列です。
MATLAB built-in function'デフォルト 関数は、特定のデータタイプについて操作を行うことに特化していない関数です。関数呼び出しの引数が、定義された関数の特化されたバージョンをもつクラスを指定しない場合は、呼び出される関数がデフォルト関数です。
以下の例は、関数deblankに対する関数ハンドルについて操作を行います。関数は、strfunディレクトリにデフォルトをもちます。これは、f.fileに示されています。 多重定義メソッドは、@cellディレクトリにあります。これは、f.methods.cellに示されています。
f = functions(@deblank)
f =
function: 'deblank'
type: 'overloaded'
file: 'matlabroot\toolbox\matlab\strfun\deblank.m'
methods: [1x1 struct]
f.methods
ans =
cell: 'matlabroot\toolbox\matlab\strfun\@cell\deblank.m'
セル引数を使って関数@deblankを実行する場合は、MATLABは@cellディレクトリのdeblankメソッドを呼び出します。しかし、その他の引数タイプについては、MATLABはfileフィールドに示されたデフォルトM-ファイルを呼び出します。.
関数メソッド
methodsフィールドは、タイプoverloadedの関数に対してのみ存在します。このフィールドは、関数ハンドルの範囲であるすべての多重定義メソッドを識別する別個のMATLAB構造体です。
構造体は、関数ハンドルの各メソッドに対して1つのフィールドを含みます。フィールド名は、関数を多重定義するクラスです。各フィールドの値は、メソッドを定義するソースファイルのパスとファイル名を保持するキャラクタ配列です。
たとえば、関数displayに対する関数ハンドルは、以下に示すM-ファイルの範囲である場合があります。コマンドfunctionsは、関数polynom, inline, serial, avifileを多重定義する各クラスに対してフィールドをもつmethods構造体を出力します。各クラスに対して、メソッドのソースファイルのパスとファイル名を示します。
f = functions(@display);
f.methods
ans =
polynom: '\home\user4\@polynom\display.m'
inline: 'matlabroot\toolbox\matlab\funfun\@inline\display.m'
serial: 'matlabroot\toolbox\matlab\iofun\@serial\display.m'
avifile: 'matlabroot\toolbox\matlab\iofun\@avifile\display.m'
| 関数ハンドル情報の表示 | 関数ハンドルのタイプ | ![]() |