多態性を持つノード(Polymorphic nodes)

注釈

ユーザーガイド内 Polymorphic (多態性)ノード により平易な説明があります。

Canvas での多態性(Polymorphism)はコード生成ステップの一部として実装されています。多態な型のノードであろうと、多態な型のポートを持つKL関数ノードであろうと、サブグラフは多態なKL関数を使用することになります。多態性をもつノードは、さまざまなデータ型として使用可能であり汎用性の高いユーティリティを具えます。したがって、出力されるコードは正常とコンパイラが判断してしまい、多態な型を使用した『不正なグラフを作成』することもできてしまいます。

注釈

KL2DFG コマンドラインユーティリティを使用し、設定に依存した、多態なプリセットを作成できます。 KL2DFG コマンドラインユーティリティ に詳細な情報があります。

多態なノードの型は再帰的に解決されます。Canvasは多態なKL関数に型のマッピングメカニズムを使用します。

多態な型の構文

多態なポートを定義するには、KL関数内で以下の記法に従います:

$LABEL$            // single polymorphic type
$LABEL$[]          // array polymorphic type
$LABEL1$[$LABEL2$] // dictionary polymorphic type
../_images/userguide_23.jpg

上に上げた例では、多態な配列に追加(push)をおこないます。(勿論このようなノードはファクトリプリセット内に既に存在します)他の配列をこの多態な配列に接続すると、resultポートは入力された配列の要素の型として解決されます。その逆も同様です。

../_images/userguide_24.jpg

この例では、多態な辞書(dictionary)の要素の検索を実装しています。(勿論ファクトリプリセット内に既にあります)この辞書の、要素、key、両方共多態な型であり、辞書に接続を行うことで型が解決されます。