一般来说,我们都听说过编程语言中的函数或过程。然而,我发现我几乎可以互换地使用这些术语(这可能是非常错误的)。
我的问题是:
它们的功能、目的和用途有什么不同?
请举例说明。
一般来说,我们都听说过编程语言中的函数或过程。然而,我发现我几乎可以互换地使用这些术语(这可能是非常错误的)。
我的问题是:
它们的功能、目的和用途有什么不同?
请举例说明。
当前回答
在С#/Java中,函数是返回特定值的代码块,而过程是返回void(什么都没有)的代码块。在c# /Java中,函数和过程通常都被称为方法。
//This is a function
public DateTime GetCurrentDate()
{
return DateTime.Now.Date;
}
//This is a procedure(always return void)
public void LogMessage()
{
Console.WriteLine("Just an example message.");
}
其他回答
如果我们在这里与语言无关,那么过程通常指定了可靠且幂等地实现某个结果所需的一系列行为。也就是说,一个过程基本上就是一个算法。
另一方面,函数是较大程序中某种程度上独立的代码段。换句话说,函数是过程的实现。
在db的上下文中: 存储过程是预编译的执行计划,而as函数不是。
更严格地说,如果x = y,函数f遵守f(x) = f(y)的性质,即每次使用相同的参数调用它时,它都会计算相同的结果(因此它不会改变系统的状态)。
因此,rand()或print("Hello")等不是函数,而是过程。 而sqrt(2.0)应该是一个函数:无论调用多少次,都没有可观察到的效果或状态变化,它总是返回1.41或其他。
基本的不同点
函数必须返回一个值,但在存储过程中它是可选的:一个过程可以返回0或n个值。 函数只能有输入参数,而过程可以有输入/输出参数。 对于一个函数,必须带一个输入参数,但存储过程可以带0到n个输入参数。 函数可以从过程中调用,而过程不能从函数中调用。
先进的差异
异常可以用try-catch块在过程中处理,而try-catch块不能在函数中使用。 我们可以在过程中使用事务管理,而在函数中则不能。
在SQL:
A Procedure allows SELECT as well as DML (INSERT, UPDATE, DELETE) statements in it, whereas Function allows only SELECT statement in it. Procedures can not be utilized in a SELECT statement, whereas Functions can be embedded in a SELECT statement. Stored Procedures cannot be used in SQL statements anywhere in a WHERE (or a HAVING or a SELECT) block, whereas Functions can. Functions that return tables can be treated as another Rowset. This can be used in a JOIN block with other tables. Inline Functions can be thought of as views that take parameters and can be used in JOIN blocks and other Rowset operations.
程序: 1.过程是定义参数化计算的语句的集合。 2.过程不能返回值。
3.不能从函数调用过程。
功能 1.函数在结构上类似于过程,但在语义上以数学函数为模型。 2.它可以返回值 3.函数可以从过程中调用。