Lua极简入门(六) 您所在的位置:网站首页 返回值调用 Lua极简入门(六)

Lua极简入门(六)

2023-09-18 00:10| 来源: 网络整理| 查看: 265

Java、C#之类的都不允许返回多个值,而Python、Go等允许返回多个值,这极大的方便了自定义函数时,扩展更多的功能。比如一个函数,除了返回结果外,还可以返回错误信息等。Lua也具备这点能力。

function getName() return "ray", "hu" end husband,wife = getName() print(husband, wife) -->> ray hu

这种方式在很多场景下都很有效,可以完成其他语言需要借助对象才能完成的工作。比如从考试成绩中查找到最高分和最低分

function getHighAndMin(val) if val then high, min = val[1], val[1] end for i, v in pairs(val) do if high < v then high = v end if min > v then min = v end end return high, min end high, min = getHighAndMin({ 37, 59, 98, 87, 29, 99, 67 }) print(high, min) -->> 99 29

通函数定义时,Lua有实参和形参之分,可以传递超过形参个数的实参,可以正好,也可以少于或者不传,针对不同情况,Lua会执行给形参赋值。对于多个返回值,Lua也有相应的读取返回值的规则。

直接调用函数时,没有接收的参数,此时所有返回值都将丢失 function getName() return "ray", "hu" end getName() -->> 函数没有返回值,或返回值不足时,Lua会使用nil进行补足,当表达式变量与函数返回相同时,完全接收 function getName() return "ray", "hu" end function change() name = "ray" end a, b = getName() print(a, b) -->> ray hu a, b, c = getName() print(a, b, c) -->> ray hu nil a, b = change() print(a, b) -->> nil nil 当函数调用是一个表达式的最后一个,或只有该函数调用,将尽可能保留最多的返回值 function getName() return "ray", "hu" end a = getName() print(a) -->> ray a, b, c = "xx", getName() print(a, b, c) -->> xx ray hu 当函数调用,不是一个表达式的最后元素时,将只返回一个返回值,其他丢弃 function get() return 1, 2 end a, b, c = get(), 6 print(a, b, c) -->> 1 6 nil a, b = get(), 6, 7 print(a, b) -->> 1 6 当在一个函数中调用另外一个函数时a(b()),当b为a的最后一个参数时,将b的所有返回值全部传入到函数a中 function b() return 1, 2, 3 end function a(a, b) return a + b end print(a(b())) -- 3被舍弃 -->> 3 print(a(6, b())) -- 传入1,2,3但2,3被舍弃 -->> 7 当声明table时,调用函数,同表达式调用类似,如果函数是最后一个元素,则返回全部值,如果不是最后一个,则只返回一个值 function b() return 1, 2, 3 end t = {4, b()} -- 4,1,2,3 print(#t) -->> 4 t = {b(), 4} -- 1,4 print(#t) -->> 2 当使用return语句后调用函数时,将返回函数的所有值;如果使用()标记函数时,则只返回第一个值 function a() return 1,2,3 end function b() return a() end print(b()) -->> 1 2 3 print((a())) -->> 1


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有