Основано на «Типе подобной карты, кроме с переменным числом аргументов».Я думаю, что вы можете искать Apply
до уровня 1. Это делается с:
Apply[function, array, {1}]
или сокращением:
function @@@ array
Вот что он делает:
array = {{1, 2, 3}, {a, b, c}, {Pi, Sin, Tan}};
action @@@ array
<b> {action[1, 2, 3], action[a, b, c], action[Pi, Sin, Tan]} </b>
Терминология, которую я использовал выше, может вводить в заблуждение и ограничивать мощность Apply
.Выражение, к которому вы применяете action
, не обязательно должно быть прямоугольным массивом.Он даже не должен быть List
: {...}
или иметь его элементы в виде списков.Вот пример, включающий эти возможности:
args = {1, 2} | f[a, b, c] | {Pi};
action @@@ args
<b> action[1, 2] | action[a, b, c] | action[Pi] </b>
args
- это не List
, а набор Alternatives
- количество переданных аргументовдо
action
изменяется - один из элементов
args
имеет головку f
Обратите внимание:
action
заменяетзаголовок каждого элемента args
, каким бы он ни был. - Заголовок
args
сохраняется на выходе, в данном случае Alternatives
(краткая форма: a | b | c
)