Иллюстрированный самоучитель по Mathematica 3/4

Чистые функции. Анонимные функции.

Иногда может потребоваться создание функции, не имеющей имени (например, если функция будет использоваться только один раз, сразу же после ее создания). Эта функция представляется только выражением без идентификатора, отсюда и ее название – чистая функция (pure function). Для создания такого объекта служит встроенная функция Function, используемая в одном из следующих вариантов:

  • Function [body] – создает чистую функцию с телом body;
  • Function [ {х}, body ] – создает чистую функцию параметра х с телом body;
  • Function [ {x1, х2,…},body] – создает чистую функцию ряда параметров x1, х2,… с телом body.

Для вычисления созданной таких образом функции после нее задается список параметров в квадратных скобках. Например, взятую ранее в качестве примера функцию возведения в степень можно задать и использовать следующим образом:

Function[{x, n}, x^n]
Function[{x, n), xn]
%[2, 3]
8

Чистую функцию можно легко превратить в обычную функцию пользователя, что показывает следующий пример:

fun=Function[{x,n},x^n]
Function[ {x, n}, xn]
{fun[2.3],fun{z,y}}
{8, zy }

Анонимные функции

Предельно компактную форму задания имеют так называемые анонимные функции. Они не имеют ни названия, ни обычного определения и задаются только выражениями специального вида. В этом выражении вместо переменных используют обозначения # (для одной переменной) или #1, #2,… (для ряда переменных). Завершается тело функции символом "&". Если надо вычислить функцию, то после ее записи в квадратных скобках указывается список фактических параметров.

Для нашего примера анонимная функция выглядит так:

#1^#2 &[2, 3]
8
#1^#2 &[y, z]
y^z

С помощью анонимных функций нетрудно создавать обычные функции пользователя:

f[x_, y_] = #1^#2 &[x, y]
xy
f[2, 3]
8

Несмотря на то что применение анонимных функций открывает возможности компактного задания многих функций, эта форма едва ли интересна для большинства читателей – они наверняка предпочтут пусть немного более длинное, но значительно более очевидное задание функций другими способами.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.