Spec-Zone.ru › OpenTofu 1.9

Условные выражения

Условное выражение использует значение логического выражения для выбора одного из двух значений.

Синтаксис​

Синтаксис условного выражения выглядит следующим образом:

Блок кода
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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API