| 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
| 関数名を関数ハンドルに変換 | 関数ハンドルのセーブとロード |