computer-science - 您如何称呼可以再次调用以重新执行而不是再次执行的函数?
问题描述
我正在寻找一个术语,用于表示非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()
,该函数为通讯设备接收到的数据注册一个默认回调。如果我想重置通讯驱动程序,我不能简单地再次调用此函数,因为默认回调将附加到现有的过时回调。
是否有与这两种类型的功能相关的特定术语(除了通用的优点!)?
解决方案
那是一个幂等函数。
阅读下想象性命名的更多内容:“什么是幂等操作? ”
推荐阅读
- python-3.x - 为什么 Python 不为顶级脚本文件保存字节码文件?
- c++ - How does everything work (including operator '->'), when sizeof's size and the actual object size don't match?
- authentication - 如何在flutter中从streambuilder导航到其他页面?
- python - Discord.py - 如何检测用户是否提到/ping 机器人
- c++ - 自定义lua字节码/操作码(编译器/阅读器/解析器/反编译器)
- azure - Azure AD B2C - 自定义 Azure AD 自定义身份提供程序的 UI
- python-3.x - Trim text from scraped element - Python / bs4
- python - 我正在尝试下载 pygame,但它一直出现相同的错误(错误:命令 'gcc' 失败,退出状态为 1)?
- windows - 在 windows 中替换 create_symlink
- javascript - bcryptjs 或 bcrypt 如何验证使用随机盐生成的密码哈希?