首页 > 解决方案 > 您如何称呼可以再次调用以重新执行而不是再次执行的函数?

问题描述

我正在寻找一个术语,用于表示非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(),该函数为通讯设备接收到的数据注册一个默认回调。如果我想重置通讯驱动程序,我不能简单地再次调用此函数,因为默认回调将附加到现有的过时回调。

是否有与这两种类型的功能相关的特定术语(除了通用的优点!)?

标签: computer-scienceterminology

解决方案


那是一个幂等函数。

阅读下想象性命名的更多内容:什么是幂等操作?


推荐阅读