Main Content

importEnumTypes

列挙型定義をデータ ディクショナリにインポート

説明

importedTypes = importEnumTypes(dictionaryObj,targetTypes) は、targetTypes で指定された 1 つ以上の列挙型の定義をデータ ディクショナリ dictionaryObj にインポートします。importEnumTypes でインポートされるのは、列挙型を使用して作成された MATLAB 変数ではなく、それらの変数で使用される型の定義です。正常にインポートされた型の定義はターゲットのデータ ディクショナリにエントリとして格納されます。この構文は正常にインポートされた型の名前のリストを返します。importEnumTypes ではターゲット ディクショナリに行った変更が保存されるため、importEnumTypes を使用する前に、保存されていない変更が許容可能であるか確認してください。

[importedTypes,importFailures] = importEnumTypes(dictionaryObj,targetTypes) は、正常にインポートされなかったターゲットの型のリストも返します。このリストで失敗したそれぞれの理由を検証できます。

すべて折りたたむ

現在の作業フォルダーにデータ ディクショナリ myNewDictionary.sldd を作成し、その新しいデータ ディクショナリを表す Simulink.data.Dictionary オブジェクトを作成します。そのオブジェクトを変数 myDictionaryObj に代入します。

myDictionaryObj = Simulink.data.dictionary.create('myNewDictionary.sldd');

MATLAB ファイル myDataEnum_ex_API.m のスクリプトを実行します。このファイルで、関数 Simulink.defineIntEnumType を使用して InstrumentTypes という名前の列挙型を定義し、その新しい型に基づいて 3 つの変数を作成します。その後、それらの新しい変数をベース ワークスペースから myDictionary_ex_API.sldd にインポートします。

myDataEnum_ex_API
importFromBaseWorkspace(myDictionaryObj,'varList',...
{'firstEnumVariable','secondEnumVariable','thirdEnumVariable'});

インポートした変数をベース ワークスペースから消去します。ターゲットのデータ ディクショナリに列挙データ型の定義をインポートする前に、ターゲットの型を使用して作成されたベース ワークスペースの変数をクリアしなければなりません。

clear firstEnumVariable
clear secondEnumVariable
clear thirdEnumVariable

データ型定義を myDictionary_ex_API.sldd にインポートします。

importEnumTypes(myDictionaryObj,{'InstrumentTypes'})
ans = 

       className: 'InstrumentTypes'
    renamedFiles: {}

入力引数

すべて折りたたむ

ターゲットのデータ ディクショナリ。Simulink.data.Dictionary オブジェクトとして指定します。この関数を使用する前に、関数 Simulink.data.dictionary.create や関数 Simulink.data.dictionary.open を使用してターゲットのディクショナリを Simulink.data.Dictionary オブジェクトで表しておきます。

インポートする列挙型定義。文字ベクトルの cell 配列、または string 配列として指定します。ターゲットの型に MATLAB ファイルまたは P ファイルの classdef ブロックを使用して定義された型が含まれている場合は、importEnumTypes でファイルを無効にできるように、それらのファイルが MATLAB パス上になければなりません。

例: {'myEnumType'}

例: {'myFirstEnumType','mySecondEnumType','myThirdEnumType'}

データ型: cell

出力引数

すべて折りたたむ

正常にインポートされたターゲットの列挙型定義。構造体の配列として返されます。配列の各構造体はインポートされた 1 つの型を表します。各構造体の className フィールドは型の名前を示し、renamedFiles フィールドは名前が変更された MATLAB ファイルまたは P ファイルを示します。

インポートされなかったターゲットの列挙型定義。構造体の配列として返されます。配列の各構造体はインポートされなかった 1 つの型を表します。各構造体の className フィールドは型の名前を示し、reason フィールドは失敗した理由を示します。

ヒント

  • データ ディクショナリに列挙データ型の定義をインポートする前に、ターゲットの型を使用して作成された変数のベース ワークスペースをクリアしなければなりません。

  • 列挙型は MATLAB ファイルまたは P ファイルの classdef ブロックを使用して定義できます。importEnumTypes では、インポートする型の名前が入力引数 targetTypes で指定されていて、それらの型の定義が格納されているファイルが MATLAB パス上にあれば、それらのファイルから型定義を直接インポートします。

  • インポートされる型の定義の競合を回避するために、importEnumTypes は MATLAB ファイルまたは P ファイルの名前に .save を付けて無効にします。拡張子 .save を付けることで、それらのファイル内の定義ではなく、ターゲットのデータ ディクショナリ内の定義が変数で使用されるようになります。拡張子 .save を削除すればファイルを元の状態に戻すことができます。

  • importEnumTypes では、関数 Simulink.defineIntEnumType を使用して定義された列挙型もインポートできます。これらは MATLAB ファイルまたは P ファイルで定義された型ではないため、importEnumTypes でファイル名の変更は行われません。

  • モデルで使用されている列挙型のリストを生成するには、関数 Simulink.findVars を使用します。そのリストを importEnumTypes で使用して、それらの型の定義をデータ ディクショナリにインポートすることができます。詳細については、データ ディクショナリの列挙値を参照してください。

バージョン履歴

R2015a で導入