一般来说,我们都听说过编程语言中的函数或过程。然而,我发现我几乎可以互换地使用这些术语(这可能是非常错误的)。
我的问题是:
它们的功能、目的和用途有什么不同?
请举例说明。
一般来说,我们都听说过编程语言中的函数或过程。然而,我发现我几乎可以互换地使用这些术语(这可能是非常错误的)。
我的问题是:
它们的功能、目的和用途有什么不同?
请举例说明。
当前回答
一般来说,程序是一系列指令。 函数可以是相同的,但它通常返回一个结果。
其他回答
在大多数情况下:函数返回一个值,而过程不返回。两者都是组合在一起做相同事情的代码片段。
在函数式编程上下文中(所有函数都返回值),函数是一个抽象对象:
f(x)=(1+x)
g(x)=.5*(2+x/2)
这里,f和g是同一个函数,但是过程不同。
更严格地说,如果x = y,函数f遵守f(x) = f(y)的性质,即每次使用相同的参数调用它时,它都会计算相同的结果(因此它不会改变系统的状态)。
因此,rand()或print("Hello")等不是函数,而是过程。 而sqrt(2.0)应该是一个函数:无论调用多少次,都没有可观察到的效果或状态变化,它总是返回1.41或其他。
C语言示例:
// function
int square( int n ) {
return n * n;
}
// procedure
void display( int n ) {
printf( "The value is %d", n );
}
尽管你应该注意到C标准没有谈论过程,只有函数。
一般来说,程序是一系列指令。 函数可以是相同的,但它通常返回一个结果。
Function可以在sql语句中使用,而procedure不能在sql语句中使用。
插入、更新和创建语句不能包含在函数中,但过程可以包含这些语句。
过程支持事务,但函数不支持事务。
函数必须返回一个且仅返回一个值(另一个值可以由OUT变量返回),但过程返回尽可能多的数据集和返回值。
函数和过程的执行计划都被缓存,因此在这两种情况下性能是相同的。