Spec-Zone.ru › OpenTofu 1.12

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

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

Синтаксис​

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

Блок кода
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.12/language/expressions/conditionals/

Spec-Zone.ru

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