Как вы называете функцию, которую можно вызывать снова, чтобы сделать заново вместо того, чтобы делать снова? - PullRequest
0 голосов
/ 01 октября 2018

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

Например, эта функция не будет соответствовать критериям:

void CounterExample(int value)
{
  static int STORE[5];
  static int STORE_COUNT=0;

  STORE[STORE_COUNT++] = value;
}

В то время как эта функция будет:

void Example(int value)
{
  static int STORE[5];
  static int STORE_COUNT=0;

  STORE_COUNT = 0;
  STORE[STORE_COUNT++] = value;
}

В частности, я думаю об оборудованиифункции инициализации.Часто они настраивают GPIO определенным образом, проходят последовательность включения, а затем каким-то образом настраивают оборудование.Если позже мне нужно будет заново инициализировать аппаратное обеспечение, я могу просто снова вызвать эту функцию.Однако, если функция также устанавливает некоторые программные структуры, скажем, добавляя к массиву сконфигурированных структур, то я не могу вызвать эту функцию снова, не отменив сначала то, что сделала функция.

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

Есть ли конкретная терминология, связанная с этими двумя типами функций (кромеобщие условия заслуги!)?

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Это идемпотентная функция.

Подробнее под образным именем: " Что такое идемпотентная операция? "

0 голосов
/ 01 октября 2018

Рекурсивная функция (DEF) - это функция, которая либо вызывает сама себя, либо находится в потенциальном цикле вызовов функции.Как указано в определении, существует два типа рекурсивных функций.Рассмотрим функцию, которая вызывает себя: мы называем этот тип рекурсии немедленной рекурсией.

Источник: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cad=rja&uact=8&ved=2ahUKEwjZ8tLFhOTdAhWBecAKHYL7BA4QFjABegQIBhAE&url=http%3A%2F%2Fpages.cs.wisc.edu%2F~calvin%2Fcs110%2FRECURSION.html&usg=AOvVaw09CvF8i5I7WunwACK0w1yx

...