函数概述
在编程术语中,函数是一段执行特定任务的语句块。函数接受数据,处理数据并返回结果。编写函数的主要目的是为了支持可重用性的概念。一旦编写了函数,就可以轻松地调用它,而无需一遍又一遍地编写相同的代码。
不同的函数式编程语言使用不同的语法来编写函数。
编写函数的先决条件
在编写函数之前,程序员必须了解以下几点:
程序员应该知道函数的目的。
程序员应该知道函数的算法。
程序员应该知道函数的数据变量及其目标。
程序员应该知道由用户调用的函数的数据。
函数的流程控制
当调用函数时,程序“转移”控制以执行函数,其“控制流程”如下:
程序到达包含“函数调用”的语句。
执行函数内的第一行。
从上到下执行函数内的所有语句。
当函数成功执行时,控制返回到它开始的语句。
函数计算并返回的任何数据都将用于替换原始代码行中的函数。
函数的语法
函数的一般语法如下:
returnType functionName(type1 argument1, type2 argument2, . . . ) { // function body }
在C++中定义函数
让我们举个例子来了解如何在C++(一种面向对象的编程语言)中定义函数。以下代码包含一个添加两个数字并将其结果作为输出的函数。
#include <stdio.h> int addNum(int a, int b); // function prototype int main() { int sum; sum = addNum(5,6); // function call printf("sum = %d",sum); return 0; } int addNum (int a,int b) { // function definition int result; result = a + b; return result; // return statement }
它将产生以下输出:
Sum = 11
在Erlang中定义函数
让我们看看如何在Erlang(一种函数式编程语言)中定义相同的函数。
-module(helloworld). -export([add/2,start/0]). add(A,B) -> C = A + B, io:fwrite("~w~n",[C]). start() -> add(5,6).
它将产生以下输出:
11
函数原型
函数原型是函数的声明,包括返回类型、函数名和参数列表。它类似于没有函数体的函数定义。
例如:一些编程语言支持函数原型,而另一些则不支持。
在C++中,我们可以像这样创建函数'sum'的函数原型:
int sum(int a, int b)
注意:像Python、Erlang等编程语言不支持函数原型,我们需要声明完整的函数。
函数原型的用途是什么?
当调用函数时,编译器使用函数原型。编译器使用它来确保正确的返回类型,传递正确的参数列表,以及它们的返回类型是正确的。
函数签名
函数签名类似于函数原型,其中参数的数量、参数的数据类型和出现的顺序应相同。例如:
void Sum(int a, int b, int c); // function 1 void Sum(float a, float b, float c); // function 2 void Sum(float a, float b, float c); // function 3
Function1和Function2具有不同的签名。Function2和Function3具有相同的签名。
注意:我们将在后续章节中讨论的函数重载和函数重写是基于函数签名的概念。
当一个类具有多个名称相同但签名不同的函数时,可以进行函数重载。
当派生类函数与基类具有相同的名称和签名时,可以进行函数重写。