Lua函数声明与定义

Lua函数声明与定义教程

Lua 中,使用 函数 前,必须先声明与定义函数。Lua 的函数由函数名、参数列表、函数体和 返回语句 组成。

Lua函数定义

语法

optional_function_scope function function_name(argument1, argument2..., argumentn) function_body return result_params_comma_separated end

参数

参数 描述
optional_function_scope 该参数是可选的制定函数是全局函数还是局部函数,未设置该参数默认为全局函数,如果你需要设置函数为局部函数需要使用关键字 local。
function_name 函数名。
argument1 函数参数,多个参数以逗号隔开,函数也可以不带参数。
function_body 函数体,函数中需要执行的代码语句块。
result_params_comma_separated 函数返回值,Lua 语言函数可以返回多个值,每个值以逗号隔开。

说明

我们定义了一个函数,函数名为 function_name,函数参数为 argument1, argument2 等。

Lua函数调用详解

语法

returnVal = funcName(param1, param2)

说明

关键字 说明
returnVal 函数返回值
funcName 要调用的函数的名称
param1 函数的参数1
param2 函数的参数2

说明

我们调用了函数 funcName,该函数有两个参数,一个返回值 returnVal。

案例

寻找最大数

用函数,实现寻找两个数的最大数

#!/usr/bin/lua print("haicoder(www.haicoder.net)\n") function max(a, b) if (a > b) then return a else return b end end max1 = max(100, 200) max2 = max(1024, 99) print(string.format("max1 = %d, max2 = %d", max1, max2))

程序运行后,控制台输出如下:

02_Lua函数定义.png

我们定义了一个函数 max,传入两个参数 a 和 b,函数返回 a 和 b 的最大值。在函数里面,我们使用 if 语句 判断 a 和 b 的值,如果 a > b 成立,那么就返回 a 的值,如果不成立,则返回 b 的值,因此实现了寻找 a 和 b 中最大数的逻辑。

接着,我们调用了 max 函数,并打印函数返回的结果。

计算和

实现计算两个数之间的所有数的和

#!/usr/bin/lua print("haicoder(www.haicoder.net)\n") function sum(a, b) local result = 0 for i = a, b do result = result + i end return result end sum1 = sum(1, 100) sum2 = sum(100, 1000) print(string.format("sum1 = %d, sum2 = %d", sum1, sum2))

程序运行后,控制台输出如下:

03_Lua函数定义.png

我们定义了一个函数 sum,传入两个参数 a 和 b,函数返回参数 a 和 b 之间所有数的和。在函数里面,我们使用 for 循环 遍历 a 和 b 之间的所有数,并将它们相加赋值给变量 result,最后返回 result 即实现了求 a 和 b 之间的和的逻辑。

当然,这题,我们没有考虑 a 小于 b 的情况,最好的方法,应该是找到 a 和 b 中的最大值和最小值,然后再使用 for 循环遍历相加。

Lua函数声明与定义总结

在 Lua 中,使用函数前,必须先声明与定义函数。Lua 的函数由函数名、参数列表、函数体和返回语句组成。Lua 函数声明的语法为:

optional_function_scope function function_name(argument1, argument2..., argumentn) function_body return result_params_comma_separated end