可以再次调用重新做而不是重新做的函数叫什么?
What do you call a function that can be called again to re-do instead of doing again?
我正在为非 纯 且不一定 可重入 但在第二次调用时创建的函数寻找一个术语和第一次调用时一样的状态。
例如,这个函数不会通过标准:
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()
的函数,该函数为通信设备接收的数据注册默认回调。如果我想重置通讯驱动程序,我不能简单地再次调用此函数,因为默认回调将附加到现有的过时回调。
是否有与这两种类型的功能相关的特定术语(除了通用的优点!)?
递归函数 (DEF) 是一种函数,它要么调用自身,要么处于潜在的函数调用循环中。正如定义所指定的,有两种类型的递归函数。考虑一个调用自身的函数:我们称这种类型的递归为立即递归。
这是一个幂等函数。
在充满想象力的名字下阅读更多内容:"What is an idempotent operation?"
我正在为非 纯 且不一定 可重入 但在第二次调用时创建的函数寻找一个术语和第一次调用时一样的状态。
例如,这个函数不会通过标准:
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()
的函数,该函数为通信设备接收的数据注册默认回调。如果我想重置通讯驱动程序,我不能简单地再次调用此函数,因为默认回调将附加到现有的过时回调。
是否有与这两种类型的功能相关的特定术语(除了通用的优点!)?
递归函数 (DEF) 是一种函数,它要么调用自身,要么处于潜在的函数调用循环中。正如定义所指定的,有两种类型的递归函数。考虑一个调用自身的函数:我们称这种类型的递归为立即递归。
这是一个幂等函数。
在充满想象力的名字下阅读更多内容:"What is an idempotent operation?"