主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

コマンドラインでの入力としてのオブジェクトの指定

codegenを使用してコードを生成する場合,値クラスオブジェクトである入力の型を指定するために,arg游戏オプションを使用してオブジェクト例を指定できます。

  1. 値クラスを定義します。たとえば,クラスmyRectangleを定義します。

    classdefmyRectangle属性长度;宽度;结束方法函数obj = myRectangle (l, w)如果Nargin > 0 obj。长度= l;obj。宽度= w;结束结束函数Area = calcalarea (obj)长度* obj.width;结束结束结束

  2. 値クラスのオブジェクトを入力として取得する関数を定義します。次に例を示します。

    函数z = getarea(右)% # codegenz =钙质海绵纲(r);结束

  3. クラスのオブジェクトを作成します。

    rect_obj = myRectangle(4、5)

    rect_obj = myRectangle with properties: length: 4 width: 5
  4. arg游戏オプションを使用して,オブジェクト例をcodegenに渡します。

    codegengetareaarg游戏{rect_obj}报告

    コード生成レポートで,rにオブジェクト例rect_objectと同じプロパティ长度および宽度があることがわかります。プロパティのサイズと型は,オブジェクト例rect_objectと同じです。

オブジェクト例を指定する代わりに,値クラスのオブジェクトの型を作成し,arg游戏オプションを使用してその型を指定することができます。

  1. クラスのオブジェクトを作成します。

    rect_obj = myRectangle(4、5)
    rect_obj = myRectangle with properties: length: 4 width: 5

  2. プロパティの型がrect_objと同じmyRectangleのオブジェクトに対する型を作成するには,coder.typeofを使用します。

    coder.typeofは,クラスに対する型を定義する编码器。ClassTypeオブジェクトを作成します。

    t = coder.typeof (rect_obj)
    t =编码器。ClassType1×1 myRectangle length: 1×1 double width : 1×1 double

  3. arg游戏オプションを使用して,型をcodegenに渡します。

    codegengetareaarg游戏{t}报告

値クラスの型を作成した後,プロパティの型を変更できます。たとえば,tのプロパティを16ビット整数にするには,次を行います。

t.Properties.length = code .typeof(int16(1))

プロパティを追加または削除することもできます。たとえば,newpropプロパティを追加する方法は以下のとおりです。

t.Properties.newprop = coder.typeof (int16 (1))

编码器。ClassTypeオブジェクトとクラス定義ファイル間の整合性

コードを生成するとき,codegenに渡される编码器。ClassTypeオブジェクトのプロパティはクラス定義ファイル内のプロパティと一致していなければなりません。コードで使用されていないプロパティがクラス定義ファイルに存在する場合,编码器。ClassTypeオブジェクトはこれらのプロパティを含める必要はありません。コードジェネレーターは,使用されていないプロパティを削除します。

オブジェクトをエントリポイント関数の入力として使用する場合の制限事項

オブジェクトであるエントリポイント関数の入力には次のような制限事項があります。

  • エントリポイント関数の入力であるオブジェクトは,値クラスのオブジェクトでなければなりません。ハンドルクラスのオブジェクトをエントリポイント関数の入力にすることはできません。そのため,ハンドルクラスを含む値クラスをエントリポイント関数の入力にすることはできません。

  • オブジェクトをグローバル変数にすることはできません。

  • オブジェクトに重複するプロパティ名がある場合は,そのオブジェクトを编码器。常数で使用できません。次の場合,サブクラスのオブジェクトでプロパティ名が重複します。

    • サブクラスに,スーパークラスのプロパティと同じ名前のプロパティがある。

    • サブクラスが,プロパティに同じ名前を使用する複数のスーパークラスから派生している。

    MATLAB®で重複するプロパティ名が許可される場合の詳細については,複数のクラスからのサブクラスの作成を参照してください。

参考

関連するトピック