Я вас иметь в виду, что вы хотите, чтобы определить, какой-либо нескольких переменных, является ли пустая строка. Вы можете использовать новую функцию reduce()
для решения этой проблемы.
Например, это ...
$is_any_empty = reduce([$one, $two, $three], false) |$memo, $entry| {
$memo or ($entry == '')
}
... устанавливает переменную $is_any_empty
в true
тогда и только тогда, когда по крайней мере одна из переменных $one
, $two
и $three
содержит пустую строку, которая является то, что Ты спрашивал.
Даже с вашим разъяснением, однако, я подозреваю, что это не совсем то, что вы действительно хотите. Мое лучшее предположение состоит в том, что вы действительно хотите определить, есть ли все переменные из набора переменных, которые имеют значения , но не -пустые строки (в отличие от того, что они не определены или имеют значения, которые не являются нитями вообще). Такой типа-Aware проверки может быть сделано с помощью новой системы типа кукольного 4 в:
$all_are_nonempty = reduce([$one, $two, $three], true) |$memo, $entry| {
$memo and ($entry =~ String[1])
}
$entry =~ String[1]
это логическое выражение, вычисляемое ли значение переменной $entry
имеет тип String
и по крайней мере один символ длинный. Обратите внимание, что он будет соответствовать строкам, состоящим только из пробелов; если вы этого не хотите, то необходимые моды остаются в качестве упражнения.
В Puppet 4, только * undefined * значения преобразуются в boolean как 'false'. Все остальные значения, включая пустые строки, пустые списки и пустые хеши, преобразуются в boolean как 'true'. Ваш пример подсказывает, что вы действительно хотите определить, определены ли переменные *, а не пустые ли они. Это ведь то, что вы хотите? –
@JohnBollinger: Очень жаль, что поднял вопрос с неправильным примером. Я хочу проверить, содержит ли переменная пустую строку или нет. – ArunRaj