函数的返回值

最后更新于:2022-04-01 02:15:47

### 函数的返回值 lua具有一项与众不同的特性,允许函数返回多个值。lua的库函数中,有一些就是返回多个值。 > 示例代码:使用库函数string.find,在源字符串中查找目标字符串,若查找成功,则返回目标字符串在源字符串中的起始位置和结束位置的下标。 ~~~ local s, e = string.find("hello world", "llo") print(s, e) -->output 3 5 ~~~ 返回多个值时,值之间用“,”隔开。 > 示例代码:定义一个函数,实现两个变量交换值 ~~~ function swap(a, b) --定义函数swap,实现两个变量交换值 return b, a --按相反顺序返回变量的值 end local x = 1 local y = 20 x, y = swap(x, y) --调用swap函数 print(x, y) -->output 20 1 ~~~ 当函数返回值的个数和接收返回值的变量的个数不一致时,lua也会自动调整参数个数。调整规则:若返回值个数大于接收变量的个数,多余的返回值会被忽略掉;若返回值个数小于参数个数,从左向右,没有被返回值初始化的变量会被初始化为nil。 > 示例代码: ~~~ function init() --init函数 返回两个值 1和"lua" return 1, "lua" end x = init() print(x) x, y, z = init() print(x, y, z) --output 1 1 lua nil ~~~ 当一个函数有一个以上返回值,且函数调用不是一系列表达式的最后一个元素,那么函数调用只会产生一个返回值,也就是第一个返回值。 > 示例代码: ~~~ function init() --init函数 返回两个值 1和"lua" return 1, "lua" end local x, y, z = init(), 2 --init函数的位置不在最后,此时只返回 1 print(x, y, z) -->output 1 2 nil local a, b, c = 2, init() --init函数的位置在最后,此时返回 1 和 "lua" print(a, b, c) -->output 2 1 lua ~~~
';