式における暗黙的キャスト


暗黙的キャスト、つまり暗黙的変換は、Architectがあるデータ型の明示的キャストを行い、結果の値型を別のデータ型に変換することです。 Architectは、有効な式テキストの結果の値型に対して暗黙的な変換のみを実行します。暗黙的キャストは、タイプ階層またはタイプ表現の特定機能を利用します。Architectは私を実行しますある型の式が暗黙的に変換された場合 その型を受け入れない特定の変数との関連で使用されます。

Architectでは、フロー作成者は「like」タイプの値のみを割り当てることができます。文字列変数は文字列値のみ割り当てできます。ただし、Architect のパーサーは各式のデータ型を評価して、可能なら暗黙的キャストを使ってフロー作成者のために結果を調整します。


次の例では、フロー作成者は整数を文字列として表現したいと考えています。ランタイムに式の結果は文字列「5」となります。

ToString(5)

これはの例です 明示的キャスト ここで、式authorは、ToString関数呼び出しを追加して整数を渡すことによって、整数値を5から文字列に変換します。実行時に評価されたときのこの式の結果の値は「5」になります。

フロー作成者は、次の有効な文字列式も入力できます。

ToString(3+4)

この表現は 明示的キャスト。フロー作成者はパーサーに整数を文字列に変換させます。暗黙的キャストは 結果の型 式テキストの例

フロー作成者はこの有効な文字列式を入力することもできます。

3+4

" ;like" ;型に関しては、この式は文字列に整数を代入しようとするので無効ですが、文字列変数は文字列代入しか持てないことがわかっています。しかし 暗黙的キャスト、Architectは式を解決できます。パーサーが ToString 値を式の周りに追加し、これによって整数が文字列に変換され、次の式が返されます:

ToString(3+4)

Architectが暗黙的キャストを実行すると、式の[式の編集]ダイアログボックスに変換の詳細を含むメッセージが返されます。

注意注:これらの変換メッセージは[式の編集]ダイアログボックスにのみ表示されます。これらはフィールド レベルのリテラルや式モードでは表示されません。ただし、Architect はフィールド レベルで入力されたか [式を編集] ダイアログ ボックスで入力されたかにかかわらず式を変換します。

暗黙的キャストは、1つのパラメータをとる型キャスト関数に対してのみ実行されます。暗黙的キャスト変換では最初のパラメーター以降のパラメーターのアクションは処理できないため、複数のパラメーターを持つタイプ キャスト関数はこの変換の候補としては適していません。


前の例では、結果が7の整数値になることがわかっていました。しかし、設計時に値がどうなるかわからないときの例を考えてみましょう。

Flow.MyInteger + 5

この場合、Flow.MyIntegerは整数データ型です。概念的には、結果の値は「Flow.MyIntegerの値に5を加えた値」になることがわかります。 Flow.MyIntegerの値が何であるかはわかりませんが、 行う それが整数値に別の整数値を加えたものであることを知っていて、これは整数値になるでしょう。これは暗黙的キャストのために重要です:integer + integer = integerの結果、そして結果として得られる型は文字列です。

パーサーが式を評価するとき、結果の型は文字列ではなく式textの結果は整数であると解釈します。このため、ToString を暗黙的キャストとして加算し、結果を文字列に変換します。これは望まれた結果です。

前の例と同様に、Architectが暗黙的キャストを実行すると、式の[式の編集]ダイアログボックスに変換の詳細を含むメッセージが返されます。これらの変換メッセージは [式を編集] ダイアログ ボックスにのみ表示されます。これらはフィールド レベルのリテラルや式モードでは表示されません。ただし、Architect はフィールド レベルで入力されたか [式を編集] ダイアログ ボックスで入力されたかにかかわらず式を変換します。


結果が有効な式である場合にのみ、パーサーは暗黙的キャストを実行します。しかし、結果が無効な例を考えてみましょう。最初のリリースでは、Architectはen-US、fr-CA、es-USの3つの言語のランタイムデータ再生のみをサポートしていました。したがって、フローが en-US、fr-CA、または es-US で実行される場合には、次の式は有効です。

ToAudioNumber(5005)

Architectは5005という3つの言語のどれでも表現できます。しかし、フロー作成者がチェコ共和国(cs-CZ)をサポートされている言語として追加したとします。非リアルタイムデータ再生のサポート?次の例は、Architectが無効な式を処理する方法を示しています。

フロー作成者が整数の入力を開始すると、Architectは直ちにエラーメッセージを返します。

フロー作成者がToAudioNumber関数を明示的キャストとして追加した場合でも、Architectはエラーを返します。