メインコンテンツ

builtin

オーバーロードされたメソッドから組み込み関数を実行する

説明

builtin(func,x1,...,xn) は、入力引数 x1 から xn を指定して、組み込み関数 func を実行します。"組み込み関数" は、MATLAB® 実行可能ファイルに含まれています。

クラスの組み込み関数をオーバーライドするメソッドを定義するときに、builtin を使用して、オーバーロード内から元の組み込み関数を実行できます。

[y1,...,yn] = builtin(func,x1,...,xn) は、function からの出力を y1 から yn に保存します。

すべて折りたたむ

組み込み関数 disp をオーバーロードし、かつオーバーロードしたメソッド内から組み込み機能も使用するクラスを定義します。

MyParticle クラスを定義して、xyz 方向のフィールドをもつ構造体で粒子の速度を記述します。クラスに対して disp をオーバーロードし、MyParticle のスカラー インスタンスを表示するときに、velocity プロパティに格納されている値も既定の表示にリストされるようにします。

classdef MyParticle
    properties
        velocity
    end
    methods
        function p = MyParticle(x,y,z)
            p.velocity.x = x;
            p.velocity.y = y;
            p.velocity.z = z;
        end
        function disp(p)
            builtin("disp",p)
            if isscalar(p)
                disp('  velocity')
                disp(['    x: ',num2str(p.velocity.x)])
                disp(['    y: ',num2str(p.velocity.y)])
                disp(['    z: ',num2str(p.velocity.z)])
            end
        end
    end
end

MyParticle のスカラー インスタンスを作成します。組み込みの disp を呼び出すと、クラス名とプロパティ情報を含む標準のクラス表示が提供されます。インスタンスはスカラーであるため、オーバーロードされた disp メソッドにより、velocity の構造体の値も表示されます。

a = MyParticle(1,2,3)
a = 

  MyParticle with properties:

    velocity: [1×1 struct]

  velocity
    x: 1
    y: 2
    z: 3

builtin を使用して disp を呼び出すと、既定の disp 動作にアクセスできます。builtin を使用せずに、オーバーロードされたメソッド内で MyParticle のインスタンスに対して disp を呼び出すと、無限ループが発生します。if ステートメント内で disp を呼び出しても無限ループは発生しません。これは、入力が MyParticle のインスタンスではなく文字ベクトルであるからです。

入力引数

すべて折りたたむ

組み込み関数名。文字ベクトルまたは string スカラーとして指定します。func に関数ハンドルを指定することはできません。

func の有効な入力引数。func のサポートされているデータ型の 1 つ以上の値として指定します。

ヒント

  • 関数が組み込み関数であるかどうかをチェックするには、構文 which function を使用します。

  • オーバーロードされた場合、builtin は適切に機能しません。

  • この例には、クラスの既定の表示をカスタマイズする簡単な方法が示されています。表示カスタマイズ オプションの詳細については、カスタム表示インターフェイスを参照してください。

拡張機能

すべて展開する

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2006a より前に導入