- Cocos2d-x学习笔记:完全掌握Lua API与游戏项目开发 (未来书库)
- 赵志荣
- 876字
- 2021-03-19 16:44:23
2.10 函数
我们将程序中反复执行的代码封装到一个代码块中,这个代码块模仿了数学中的函数,具有函数名、参数和返回值。
Lua中的函数很灵活,可以有全局函数和局部函数等,函数还可以作为一个值传递。
2.10.1 使用函数
使用函数首先需要定义函数,然后在合适的地方调用该函数,函数的语法格式如下:
function函数名(参数列表){ 语句组 [return返回值] }
在Lua中定义函数时关键字是function,“函数名”需要符合标识符命名规范,“参数列表”可以有多个且它们之间用逗号(, )分隔,极端情况下可以没有参数。
如果函数有值,则需要使用return语句将值返回;如果没有返回值,则函数体中可以省略return语句。
函数定义示例代码如下:
function rectangleArea(width, height) ① local area = width* height return area ② end print("320x480的长方形的面积:"..rectangleArea(32, 64)) ③
上述代码第①行是定义计算长方形的面积rectangleArea,它有两个参数,分别是长方形的宽和高。第②行代码是返回函数计算结果。调用函数的过程是通过第③行代码中的rectangleArea(32, 64)语句实现,调用函数时候需要指定函数名和参数值。
2.10.2 变量作用域
变量可以定义在函数体外,即全局变量;也可以在函数内定义,即局部变量,局部变量作用域是在函数内部有效,如果超出函数体就会失效。
我们看看下面的示例代码:
local global = 1 ① function f() local local1 = 2 ② global = global + 1 ③ return global end f() print(global) ④ print(local1) ⑤
上述代码第①行定义了全局变量global,第②行代码是定义了局部变量local1, local1是在函数体内部定义的。第④行代码是打印全局变量global,第⑤行代码是打印局部变量local1,该语句在运行时候会发生错误,这是因为local1是局部变量,作用域是在f函数体内部。
2.10.3 多重返回值
Lua的函数可以返回多个值,它的函数表达式可以同时赋值给多个变量。这是在其他语言中没有见到的,C和C++等语言要想返回多个值,可以通过给函数传递指针类型的参数实现,在Java中可通过传递引用类型参数实现。
多重返回值示例代码如下:
--定义计算长方形面积和周长函数 function caleRectangle(width, height) local area = width* height local perimeter = (width+ height)* 2 return area, perimeter ① end --获得计算长方形面积和周长 local area, perimeter = caleRectangle(10,15) ② print("宽 10 高 15,长方形面积:"..area.."长方形周长:"..perimeter)
上述代码第①行是函数caleRectangle的返回语句,该语句中返回多个值,多个值之间用逗号“,”分隔。第②行代码是调用caleRectangle函数,并且可以直接赋值给变量area和perimeter,这些变量之间也是用逗号“, ”分隔。