Это ответвление и расширение: Безопасно ли отключать Pattern :: patv?
Многие встроенные Mathematica функции допускают гибкие аргументы.В пользовательских функциях я использовал для этой цели Альтернативы
, но комментарии и ответы на упомянутый вопрос указывают на то, что это, по крайней мере, нестандартно и, возможно, нежелательно.
Позвольте мне определить фиктивную функцию foo
в качестве примера.
Off[Pattern::patv]
p = {_?NumericQ, _?NumericQ};
foo[
{x : p ..} | x : p,
{y__} | y__,
ops : OptionsPattern[]
] /; Max[y] <= 10 := bar[#, y, ops] & /@ {x}
foo
принимает в следующем порядке:
p
, или список таких объектов. OptionsPattern []
Если какое-либо из этих условий не выполняется, foo [args]
возвращается без оценки.
Два шаблона с использованием Альтернатив
( |
) являются наиболее распространенными случаями, но не исключительными.
Мне сложно понять, как лучше всего реализовать foo
.
Каков канонический способ сделать это?
Каковы его преимущества перед использованием Альтернатив
?
Это объективно легче читать?