Условные выражения
Условное выражение использует значение логического выражения для выбора одного из двух значений.
Синтаксис
Синтаксис условного выражения выглядит следующим образом:
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.10/language/expressions/conditionals/