Spec-Zone.ru › OpenTofu 1.10

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

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

Синтаксис​

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

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

Spec-Zone.ru

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