関数ハンドルの使い方

そもそも関数ハンドルとは

functionのそのものの情報を格納するデータ型.後に間接的に呼び出すことが可能になる.
実際に自分が有効活用したことはあまりない.
cellfun では次のような感じでそこそこ使う.

% (例) セル配列 cell_array の個々のセル要素の空白判定
id = cellfun(@isempty, cell_array)

使い方

@で関数ハンドルを生成・取得して,割り当てた変数をその関数のエイリアス(別名)として使う.

fh = @function_name;
foo = fh(varargin_of_function);

例として,以下の2つはどちらも同じ結果を得る.

% 関数ハンドル使用
if (hogehoge)
    fh = @min
else 
    fh = @max
end
foo = fh(var)
% 関数ハンドル不使用
if (hogehoge)
   foo = min(var);
else
   foo = max(var);
end

上記のパターンだと恩恵は少ないが,

hogege = my_function(hogehoge,@function_name)

のように,functionの引数として関数ハンドルを使うと,functionの汎用性が高くなる.

参考

@は下記のように無名関数の定義としても使える.


Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2018-03-27 (Tue) 04:55:35 (2221d)