Programming and Data Types | ![]() ![]() |
データタイプのテスト
関数 isa
は、MATLAB変数、または、オブジェクトのデータタイプ、または、クラスを識別します。変数は、タグfunction_handle
と共に関数isa
で使われることにより、関数ハンドルを保持しているか否かを調べます。つぎの関数は、関数ハンドルを計算しようと試みる前に、関数ハンドルであるか否かを調べるために渡される引数をテストします。
function evaluate_handle(arg1, arg2) if isa(arg1, 'function_handle') feval(arg1, arg2); else disp 'You need to pass a function handle'; end
等式に対するテスト
関数isequal
を使って、2つの関数ハンドルが等しいか否かを比較します。たとえば、多重定義された関数に対して、記述された特別なメソッドを実行したいことを考えます。ユーザは、限られたスコープの中の関数ハンドルを作成し、そのメソッドのみにアクセスを与えます。つぎに示す関数
test_myfun
は、最初の引数arg1
に、この関数ハンドルを受け入れ、そして、それを計算します。
arg1
の中でハンドルを計算する前に、test_myfun
は、より広い定義域をもった他の関数ハンドルに対して、それをチェックします。この他のハンドル
@myfun
は、関数に対するすべてのメソッドへのアクセスを与えます。arg1
の中の関数ハンドルが、複数の意図したメソッドを表している場合、エラーメッセージが表示され、関数は計算されません。
function test_myfun(arg1, arg2) if isequal(arg1, @myfun) disp 'Function handle holds unexpected context' else feval(arg1, arg2); end
![]() |
関数名を関数ハンドルに変換 | 関数ハンドルのセーブとロード | ![]() |