Новости | 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 -------------------Первый вариант намного сподручнее и удобнее.