式における暗黙的キャスト
暗黙のキャスト(暗黙の変換)とは、アーキテクトがあるデータ型の暗黙のキャストを取り、その結果の値型を別のデータ型に変換することである。 Architectは、有効な式テキストの結果値のタイプの暗黙的な変換を実行します。 暗黙的キャストは、タイプ階層またはタイプ表現の特定機能を利用します。 Architectは私を実行しますある型の式が暗黙的に変換された場合 その型を受け入れない特定の変数との関連で使用されます。
Architectでは、フロー作成者は「like」タイプの値のみを割り当てることができます。 文字列変数は文字列値のみ割り当てできます。 ただし、Architect のパーサーは各式のデータ型を評価して、可能なら暗黙的キャストを使ってフロー作成者のために結果を調整します。
次の例では、フロー作成者は整数を文字列として表現したいと考えています。 ランタイムに式の結果は文字列「5」となります。
ToString(5)
ToString(3+4)
この表現は 明示的キャスト。 フロー作成者はパーサーに整数を文字列に変換させます。 暗黙的キャストは 結果の型 式テキストの例
フロー作成者はこの有効な文字列式を入力することもできます。
3+4
「like」型に関しては、この式は文字列に整数を代入しようとするので無効ですが、文字列変数は文字列代入しか持てないことがわかっています。 しかし 暗黙的キャスト、Architectは式を解決できます。 パーサーが ToString 値を式の周りに追加し、これによって整数が文字列に変換され、次の式が返されます:
ToString(3+4)
Architectが暗黙的キャストを実行すると、式の[式の編集]ダイアログボックスに変換の詳細を含むメッセージが返されます。
暗黙的キャストは、1つのパラメータをとる型キャスト関数に対してのみ実行されます。 暗黙的キャスト変換では最初のパラメーター以降のパラメーターのアクションは処理できないため、複数のパラメーターを持つタイプ キャスト関数はこの変換の候補としては適していません。
前の例では、結果は整数値 7 であることがわかっています。 次に、デザイン時に値が何であるかわからないような例を考えてみましょう。
Flow.MyInteger + 5
この場合、Flow.MyIntegerは整数データ型です。 概念上は、結果値は「Flow.MyInteger の値に 5 の値を加算したもの」であることがわかっています。 Flow.MyInteger の値は何かはわかっていませんが、それはある整数値に別の整数値を加算したもので、結果が整数値であることはわかっています。 これは暗黙的キャストでは重要です: 整数 + 整数 = 整数で、結果のタイプは文字列です。
パーサーが式を評価するとき、結果の型は文字列ではなく式textの結果は整数であると解釈します。 このため、ToString を暗黙的キャストとして加算し、結果を文字列に変換します。これは望まれた結果です。
前の例と同様に、Architectが暗黙的キャストを実行すると、式の[式の編集]ダイアログボックスに変換の詳細を含むメッセージが返されます。 これらの変換メッセージは [式を編集] ダイアログ ボックスにのみ表示されます。 これらはフィールド レベルのリテラルや式モードでは表示されません。 ただし、Architect はフィールド レベルで入力されたか [式を編集] ダイアログ ボックスで入力されたかにかかわらず式を変換します。
結果が有効な式である場合にのみ、パーサーは暗黙的キャストを実行します。 結果が無効な例を見てみましょう。 ご存知のように、Architect の初期リリースでは米国英語 (en-US)、カナダ フランス語 (fr-CA)、米国スペイン語 (es-US) の 3 つの言語でのみランタイム データの再生がサポートされています。 en-US、fr-CA、およびes-US。 したがって、フローが en-US、fr-CA、または es-US で実行される場合には、次の式は有効です。
ToAudioNumber(5005)
Architectは5005という3つの言語のどれでも表現できます。 フロー作成者が、ランタイム データ再生サポートを持つ上記の 3 つの言語の 1 つでないオランダ語(オランダ)(nl-NL) をサポート言語として追加したらどうなるでしょうか。 次の例は、Architectが無効な式を処理する方法を示しています。
フロー作成者が整数の入力を開始すると、Architectは直ちにエラーメッセージを返します。
フロー作成者がToAudioNumber関数を明示的キャストとして追加した場合でも、Architectはエラーを返します。