本文へ移動

条件式

条件式は、ブール式の値を使用して2つの値のいずれかを選択します。

構文

条件式の構文は以下のとおりです。

コードブロック
condition ? true_val : false_val

conditiontrueの場合、結果はtrue_valになります。conditionfalseの場合、結果はfalse_valになります。

条件式の一般的な用途は、無効な値を置き換えるデフォルト値を定義することです。

コードブロック
var.a != "" ? var.a : "default-a"

var.aが空文字列の場合、結果は"default-a"になりますが、それ以外の場合はvar.aの実際の値になります。

条件

条件は、ブール値になる任意の式にすることができます。これは通常、等号、比較、または論理演算子を使用する式です。

カスタム条件チェック

構成内のいくつかのオブジェクトの種類に対して、カスタムエラーメッセージを生成する条件を作成できます。たとえば、受信した画像IDが適切にフォーマットされているかどうかをチェックする条件を入力変数に追加できます。

カスタム条件は、構成の設計と意図を将来の保守担当者が理解するのに役立つ仮定を捉えるのに役立ちます。また、エラーに関する有用な情報をより早く、コンテキスト内で返すため、コンシューマは構成の問題をより簡単に診断できます。

詳細はカスタム条件チェックを参照してください。

結果の型

2つの結果値は任意の型にすることができますが、OpenTofuが条件値を知ることなく、条件式全体が返す型を決定できるように、両方とも同じ型である必要があります。

2つの結果式が同じ型を生成しない場合、OpenTofuは両方が変換できる型を見つけようと試み、可能であればそれらの変換を自動的に行います。

たとえば、次の式は有効であり、常に文字列を返します。なぜなら、OpenTofuではすべての数値を10進数の桁を使用して文字列に自動的に変換できるからです。

コードブロック
var.example ? 12 : "hello"

ただし、この自動変換動作に依存すると、OpenTofuの変換規則に慣れていない人にとって混乱を招く可能性があるため、予想される結果の型について不確実性がある場合は、型変換関数を使用して明示的に記述することをお勧めします。

次の例は、この場合、定数"12"を記述する方が簡単であるため、作り物ですが、tostringを使用して数値を文字列に明示的に変換する方法を示しています。

コードブロック
var.example ? tostring(12) : "hello"