Не существует конструкции, эквивалентной [email protected]
, о которой я знаю, поэтому я предлагаю помещать все данные в хэш вместо отдельных параметров. Существует не проверка параметров выполняется так один параметр с типом Hash[Enum['network', 'mail', '...'], String]
будет вполне эквивалентно числу основных параметров Струнные, т.е.
class foo(
String $pre_class,
Hash[Enum['network', 'mail'], String] $classes = {},
){
Поскольку вы даже не нужны ключи, используя все содержимое хэша будет достаточно. values()
- это функция stdlib.
contain(values($classes))
Class[$pre_class] -> Class[values($classes)]
Если вам необходимо удалить пустые значения, а затем использовать filter() function:
$filtered_classes = $classes.filter |$type_name, $class_name| { $class_name != '' }
Я хотел бы добавить, что я не думаю, что данный класс является очень типичным модулем. Это профильный модуль и разработан как универсальный и многоразовый - вероятно, более типичный локально написанный модуль профиля не будет конфигурироваться до такой степени, когда имена классов задаются как значения параметров и будут иметь более жестко закодированное поведение.
Если ключи не важны, то аргумент не должен быть массивом, и вы просто используете 'содержать $ values' для включения всех этих классов? Пример выглядит немного надуманным, было бы полезно увидеть реальный манифест, чтобы дать лучший ответ. –
Да, кажется, действительно непонятно, чего вы пытаетесь достичь здесь, рефакторинг булевых условностей в лямбда-итератор из-за отсутствия контента. –
@DominicCleal \t Хороший пример: https://github.com/example42/control-repo/blob/production/site/profile/manifests/base/linux.pp, в частности, дублирование параметров для условных обозначений. – nwmcsween