对于特定类型的功能,我需要适当的术语。
假设您在 SQL 数据库中编写了一个函数,其输入和输出包含在数据库事务的范围内。
也就是说,如果您在数据库事务的范围内调用此函数,则该函数使用的所有数据在同一范围内都是可用的。它可以查询数据库表,但不能从文件系统读取文件,或 ping 网站等。如果您在单个事务中REPEATABLE READ
隔离调用该函数两次,您应该得到相同的结果,即使其他客户端正在对数据库进行更改。
同样,该函数没有副作用,除非在相同的事务范围内。不允许在数据库事务范围之外更改状态。该函数不应该发送电子邮件,也不应该写入文件系统,也不应该在 中存储值memcached
等。如果该函数更改数据库中的数据,那没关系,因为如果调用事务回滚,那么该函数的效果也是如此.
函数的参数没问题,因为它们基本上用作常量。
这种类型的功能的正确术语是什么?“确定性”似乎还不够具体。您如何描述此类功能?
感谢您的回答,但它们都不是我的想法。幂等最接近,所以我将其标记为已接受的答案。但是无论如何,你们每个人都得到了我的支持。
纯函数没有副作用,它们的结果完全基于它们的参数。给定相同参数的结果总是相同的。这不行,因为我想到的数据库函数可以基于数据的状态,函数也可以影响数据的状态。
幂等函数可以根据数据的状态返回一个结果,并且给定相同的数据状态,结果总是相同的。但这并不完全符合我的想法。无论调用多少次,幂等函数的效果都必须导致结果不变。但是在事务隔离内所做的更改和在该范围之外所做的更改之间没有区别。