函数基础与函数调用
2017-12-01 00:00:00


一、Lua中函数的用途

函数在编程中与数学意义上的函数不同。主要用于完成某些事或者返回某些值。也就是函数能作为计算使用或者完成一个过程(procedure)。

函数的实质就是调用一段特定代码。

比如自带函数print,我们可以通过这样一段代码实现。

在lua中,将chunk也处理为一个函数,但要分清楚chunk与function。

进一步对print进行赋值,使其能调用math.sin函数,sin(pi/2)=1。

 

因此,对函数的调用可以通过赋值的方式。

二、函数的调用

一般的我们只需要输入函数名()

比如init("0",0),当然,参数不是必需的,有的函数就没有参数,这等效于procedure(过程)这个概念。

特殊说明的是,对于一类参数特殊的函数,我们可以省略(),这类参数包括以单一构造式,单一字符串作为参数的调用,可以省略。但一般的,我们不进行省略,以免造成后期维护混乱。

例如:

 print“Hello world”   --正常的格式为print(“Hello world”)

三、返回值与多重返回值。

函数的调用,可以有返回值也可以没返回值,可以选择接收返回值,也可以不接受返回值,可以接收部分返回值,也可以接收全部返回值。Lua的语法非常宽泛。在接收返回值时,可以用变量承接,也可以用一个表来承接所有值。在不确定返回值时,我们通常用表。

例如:构造function函数并设置返回值的形式和个数,返回值为2*a和3*a。

作为表达式而被调用的函数

情况一:当一个函数被作为最后一个参数,或者仅有的一个参数时,其变量会被全部保存,但受限于承接变量数。其他情况下,函数仅仅保留第一个返回值。

举例1:作为最后一个参数或仅有一个参数时,变量全部保存,即6和9都被保存下来了。

 

举例2:其他情况,仅保留第一个返回值,只保留了6这个返回值。


情况二:被用作参数的函数在被调用时,同上。

举例1:作为最后一个参数或仅有一个参数时

 

举例2:其他情况,仅保留第一个返回值


情况三:在被用作表构造的时候,同上。

举例1:作为最后一个参数或仅有一个参数时

 

举例2:其他情况,仅保留第一个返回值

情况四:可以人为只让函数返回一个值,此时调用方法为(函数名())。

举例1:正常的返回形式。

 

举例2:只返回第一个值6。