ジェネリックフィルタ
前に読む:データフロープログラミングへの導入。
イントロダクション
Aurora Vision Studioで利用可能なほとんどのフィルタには、明確に定義されたタイプの入力と出力があります – それらは特定のタイプのデータにのみ適用可能です。 ただし、さまざまなタイプのデータに適用できる操作の範囲があります。たとえば、ArraySize フィルタは任意のアイテムの配列で動作でき、 TestObjectEqualTo フィルタは同じタイプの任意の2つのオブジェクトを比較できます。このためには ジェネリック フィルタ があり、これはさまざまなタイプのために インスタンス化 できます。
ジェネリック フィルタは、C++の関数テンプレートに非常に似ています。
タイプ定義
各ジェネリック フィルタは、任意の有効な型を表す型変数 T を使用して定義されます。たとえば、GetArrayElement フィルタには次のポートがあります:
ポート | タイプ | 説明 | |
---|---|---|---|
inArray | TArray | 入力配列 | |
inIndex | Integer | 配列内のインデックス | |
outValue | T | 配列からの要素 |
インスタンス化
ジェネリック フィルタがプログラムに追加されると、ユーザーはこのフィルタのインスタンスに使用する T タイプを選択する必要があります。 このプロセスはインスタンス化と呼ばれます。タイプを選択するために使用されるダイアログウィンドウには、2つのバリアントがあります。それらは異なる メッセージのみが表示されるだけです:
たとえば、GetArrayElement フィルタがプログラムに追加され、ユーザーが T 変数を Real タイプを表すものとして選択した場合、フィルタのインターフェースは次のようになります。
ポート | タイプ | 説明 | |
---|---|---|---|
inArray | RealArray | 入力配列 | |
inIndex | Integer | 配列内のインデックス | |
outValue | Real | 配列からの要素 |
インスタンス化後、フィルタはプログラムエディタに表示され、フィルタの名前によって指定されたインスタンス化されたタイプが表示されます。
よくある間違いは、必要なのは配列要素の型だけであるにも関わらず、オブジェクト全体の型を指定することです。 たとえば、実数の配列にアクセスするために意図された GetArrayElement フィルタをインスタンス化する場合、要素の型である Real 型を入力してください。しかし、オブジェクト全体の型である RealArray 型ではありません。