ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

func2str

関数ハンドルからの関数名文字列の作成

構文

func2str(fhandle)

説明

関数 func2str(fhandle) は、関数ハンドル fhandle が属している関数の名前を保持する文字列 s を作成します。

関数ハンドル上で比較や表示などの文字列操作を行うことが必要な場合、関数 func2str を使用して、関数名をもつ文字列を作成します。

func2str コマンドは、非スカラーの関数ハンドルに対しては実行されません。非スカラーの関数ハンドルを関数 func2str に渡すと、エラーが発生します。

例 1

以下のように、関数ハンドル sin を文字列に変換します。

fhandle = @sin;

func2str(fhandle)
ans =
    sin

例 2

ここに示した関数 catcherr は、ハンドル関数とデータ引数を受け取り、ハンドルを介して関数を評価します。関数の実行に失敗した場合、関数 catcherr は関数 sprintf を使用して、失敗した関数の名前のあるエラー メッセージを表示します。関数名は、関数 sprintf が表示する文字列でなければなりません。このコードでは、関数 func2str を使用して、関数ハンドルから関数名を導出します。

function catcherr(func, data)
try
    ans = func(data);
    disp('Answer is:');
    ans
catch
    disp(sprintf('Error executing function ''%s''\n', ... 
        func2str(func)))
end

関数 catcherr の最初の呼び出しでハンドルが関数 round と有効なデータ引数に渡されます。この呼び出しは成功し、要求した答えが返されます。2 番目の呼び出しでは、同じ関数ハンドルと不適切なデータ型 (MATLAB® 構造体) が渡されます。この場合、関数 round は実行に失敗し、失敗した関数名を含むエラー メッセージが関数 catcherr によって以下のように表示されます。

catcherr(@round, 5.432)
ans =
Answer is 5

xstruct.value = 5.432;
catcherr(@round, xstruct)
Error executing function "round"

詳細

すべて折りたたむ

ヒント

関数 func2str と関数 str2func を使用して、関数ハンドルを文字列に変換して再び元に戻した場合、関数ハンドルが作成されたときに元々保存されていた変数とその値はすべて失われます。

この情報は役に立ちましたか?