- 0X0B 函数调用
- 在处理求圆的面积之类的问题时容易发现,这类问题的计算步骤基本一样。如果每计算一个圆就把这些命令重新输入一边太过繁琐。
- 数学上我们可以用一个函数记号来表示非常复杂的计算过程或者根本写不出解析式的对应关系。我们也可以把一系列计算用一个函数来表示。这样每次使用到相同的代码,就写一个函数调用就可以了。
- 要定义函数首先要给函数起一个名字。在Lua中,函数名也是一个变量名。而变量名的命名规则之前已经介绍过了。
- 函数定义也是一种“表达式”。我们输入后回车就会执行。
- 函数定义表达式分为多个部分,我将按部分逐渐构造出它。
- 函数定义表达式由function和end两个关键词标记首尾。
function end
- 在function和end之间先写函数名后接一对圆括号。圆括号中需要写形式参数列表,这里我先用不要形式参数的形式。
function myFunc() end
- 函数定义表达式由function和end两个关键词标记首尾。
- 数学上的函数有自变量和因变量。在编程中定义函数时,称为形式参数和返回值。现在重定义我的函数myFunc使得,其能计算平方值。
- 它需要一个形式参数。形式参数也是一个变量,遵循变量命名规则。更多形式参数(简称形参)的问题以后会涉及。这里我把形参命名为x1:
function myFunc(x1) end
- 函数名和圆括号里的形参列表叫做函数头。在函数头之后,与function配对的end之前,可以填入“函数体”。函数体就是要执行的计算过程。
- 这里函数体只有一个语句——称为return语句。由return后接一个表达式。它表示调用函数一次就把这个表达式的值返回调用函数的地方。
function myFunc(x1) return x1^2 end
- 它需要一个形式参数。形式参数也是一个变量,遵循变量命名规则。更多形式参数(简称形参)的问题以后会涉及。这里我把形参命名为x1:
- 执行第6点最后一条定义后。myFunc就可以调用了:
myFunc(4)
y=5 myFunc(y)
- 函数调用过程可以这样近似理解(以myFunc(y)为例):
x1=y x1^2
- 为了区分定义函数时约定的在函数内使用的变量x1和调用函数时给x1赋值的变量或常数,前者(定义中的x1)称为形式参数(formal parameter);后者(例子中的4或变量y)称为实际参数(actual parameter)。
- 任何函数在使用前都需要定义。math类函数和print函数,不用定义,就能直接调用。是因为它们是所谓的预定义函数。由Lua虚拟器定义,可以直接使用。
- 0X11 更复杂的函数