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