groups.google.com/group/comp.soft-sys.math.mathematica/...
оложим, у меня есть функция с необязательными именованными аргументами, но я настаиваю на обращении к аргументам по их неукрашенным именам.
Рассмотрим эту функцию, которая добавляет два именованных аргумента, a и b:
Options[f] = {a->0, b->0}; (* The default values. *)
f[OptionsPattern[]] :=
OptionValue[a] + OptionValue[b]
Как я могу написать версию этой функции, где эта последняя строка заменяется простоa+b
? (Представь что тоa+b
это целый набор кода.)
Ответы на следующий вопрос показывают, как сокращатьOptionValue
(легче сказать, чем сделать), но не как вообще от него избавиться:Необязательные именованные аргументы в Mathematica
Philosophical Addendum: Кажется, что Mathematica собирается иметь эту магию сOptionsPattern
а такжеOptionValue
с тем же успехом он может пройти весь путь и иметь языковую конструкцию для правильного выполнения именованных аргументов, где вы можете просто ссылаться на них, вы знаете, по их именам. Как и любой другой язык с именованными аргументами. (А пока мне любопытно, какие обходные пути возможны ...)