Условные выражения
Условное выражение использует значение логического выражения для выбора одного из двух значений.
Синтаксис
Синтаксис условного выражения выглядит следующим образом:
condition ? true_val : false_val
Если condition — true, результатом будет true_val. Если condition — false, результатом будет false_val.
Часто условные выражения используются для задания значений по умолчанию, заменяющих недопустимые значения:
var.a != "" ? var.a : "default-a"
Если var.a — пустая строка, результатом будет "default-a", в противном случае это фактическое значение var.a.
Условия
Условием может быть любое выражение, результатом которого является логическое значение. Обычно это выражение использует операторы равенства, сравнения или логические операторы.
Пользовательские проверки условий
Можно создавать условия, которые выводят пользовательские сообщения об ошибках для нескольких типов объектов в конфигурации. Например, можно добавить условие для входной переменной, проверяющее правильность формата идентификаторов входящих образов.
Пользовательские условия помогают зафиксировать предположения, чтобы будущим специалистам, сопровождающим конфигурацию, было проще понять её структуру и назначение. Они также позволяют раньше и в контексте получать полезную информацию об ошибках, помогая пользователям легче диагностировать проблемы в конфигурациях.
Подробности см. в разделе Пользовательские проверки условий.
Типы результатов
Два значения результата могут иметь любой тип, но должны быть одного и того же типа, чтобы OpenTofu мог определить, какой тип будет возвращать всё условное выражение, не зная значения условия.
Если выражения результатов не возвращают значения одного и того же типа, OpenTofu попытается найти тип, к которому можно преобразовать оба значения, и, если это удастся, выполнит преобразования автоматически.
Например, следующее выражение является допустимым и всегда возвращает строку, поскольку в OpenTofu все числа могут автоматически преобразовываться в строки с помощью десятичных цифр:
var.example ? 12 : "hello"
Однако использование такого автоматического преобразования может сбивать с толку тех, кто не знаком с правилами преобразования OpenTofu. Поэтому мы рекомендуем явно указывать преобразование с помощью функций преобразования типов в ситуациях, когда ожидаемый тип результата может быть неоднозначен.
Следующий пример искусственно усложнён, поскольку в данном случае было бы проще записать константу "12" вместо преобразования типа, но он показывает, как использовать tostring, чтобы явно преобразовать число в строку.
var.example ? tostring(12) : "hello"
Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.9/language/expressions/conditionals/