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 语言函数可以返回多个值,每个值以逗号隔开。

说明

这里的 argument1, argument2 等就是函数参数,如果没有任何函数参数,括号里面什么都不用写。

案例

寻找最大数

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

#!/usr/bin/lua print("haicoder(www.haicoder.net)\n") function gcdNormal(number1, number2) local intTemp = 1 if number2 < number1 then intTemp = number2 number2 = number1 number1 = intTemp end while (number1 ~= 0) do intTemp = number2 % number1 number2 = number1 number1 = intTemp end return number2 end result = gcdNormal(10, 20) print(string.format("gcdNormal = %d", result))

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

04_Lua函数参数.png

我们定义了一个函数 gcdNormal,传入两个参数 a 和 b,函数返回一个两个参数的最大公约数。这里我们使用了穷举法实现了求参数 a 和 参数 b 的最大公约数的逻辑。

函数参数是形参

Lua 的函数参数是函数参数,对函数参数的修改不会影响实参

#!/usr/bin/lua print("haicoder(www.haicoder.net)\n") function change(a) a = 1000 end a = 100 change(a) print(string.format("a = %d", a))

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

05_Lua函数参数.png

我们定义了一个函数 change(),传入一个参数 a,在函数体中,直接对参数进行重新赋值。最后,调用该函数,并传入变量 a,执行完 change() 函数之后,我们再次打印变量 a 的值,发现 a 的值还是 100,并没有发送改变。

因为在 Lua 中,函数的参数是形式参数,即是实参的拷贝,所以修改的不是实参,所以 a 的值不会改变。

Lua函数参数总结

Lua 中函数的参数,为形式参数,即如果我们通过传值的方式,传递的参数其实是实际参数的一份拷贝,而不是真正的实际参数。在 Lua 中,函数的形参可以没有,也可以有任意多个。