很久以前,我发现有这个名称,但现在我忘记了。如果标题有误导性,请告诉我。
例如,C#中的IEnumerator有一个函数MoveNext(),它将枚举数推进到其集合的下一个元素,你可以用它来移动到下一个元素和/或检查是否有下一个元素元素,因为它返回bool。
MoveNext()不仅限于一个用例,例如只在其体内执行某些操作的空洞,或仅返回值的函数。
具有这种无限制使用的其他方法:
这种方法多次使用的一个小例子:
public class Example
{
Queue<int> testQueue;
public Example()
{
testQueue = new Queue<int>();
testQueue.Enqueue(1);
testQueue.Enqueue(2);
testQueue.Enqueue(3));
testQueue.Enqueue(4);
/// As function:
int v = testQueue.Dequeue(); // I get 1.
/// As method, just to take the elements out.
testQueue.Dequeue();
testQueue.Dequeue();
// The first element is 4.
}
}
感谢您的帮助,如果标题有些含糊不清,请原谅我。
答案 0 :(得分:1)
如果函数除了返回值之外还执行其他操作,则它是具有side effect的函数。没有副作用的函数是pure function。
答案 1 :(得分:0)
如果函数操作任何类型的数据结构或对象,则它是具有side effect的函数。如果有任何参数,带副作用的函数不保证返回值对于相同状态和相同参数总是相同。
没有副作用的函数是pure function。纯函数,在给定状态和给定参数中将始终返回相同的值。
完整回答你的问题:
这给我们留下了“做某事但不回报任何东西”的功能。根据上面的定义,这样的函数也可能是具有副作用的函数,即使它没有返回任何类型的值。