| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
andylars 29.07.2016 11:14 / 29.07.2016 11:23
Если у вас возникла задача - одинаковое значение по-умолчанию для множества (100) переменных, то это сильно похоже на то, что вам надо вооружиться структурой данных более высокого порядка (где есть всё необходимое), нежели использовать "батарею" плоских переменных.@main[]
^mymethod[
$.A[A1]
$.D[D1]
]
@mymethod[_arg]
$param[ ^rem{# default-ные значения }
$._default[DefCommon] ^rem{# общий default для всех ключей }
$.A[DefA] ^rem{# плюс частные default-ы для A и B }
$.B[DefB]
]
^param.add[$_arg] ^rem{# сложение default-ного хеша с входным }
VarA = $param.A
VarB = $param.B
VarC = $param.C
# а заданная $.D - не используется нашим методом, хотя и есть на входе
-------------------------------------------
Результат:
VarA = A1
VarB = DefB
VarC = DefCommon В том числе, есть и "резиновый" аргумент для неопределенного числа заданных входных переменных, который тоже возвращает хеш, который в свою очередь умеет _default-значение. Но будет уже привязка к порядку следования аргументов.@main[]
^mymethod[]
^mymethod[A]
^mymethod[A;B]
^mymethod[;B]
@mymethod[*vars] ^rem{# починит уже кто-то подсветку кода? }
$vars[^hash::create[$vars]] ^rem{# принудительное создание хеша, на случай пустого входного значения }
$vars._default[DefValue]
$result[
Par1 = $vars.0 ^rem{# в случае отсутствия любой из них }
Par2 = $vars.1 ^rem{# вернет ValueDefault }
------------------
]
Результат:
Par1 = DefValue
Par2 = DefValue
-------------------
Par1 = A
Par2 = DefValue
-------------------
Par1 = A
Par2 = B
-------------------
Par1 = DefValue
Par2 = B
-------------------Первый вариант намного сподручнее и удобнее.