Lua函数

来源:互联网 发布:淘宝男t恤店推荐 知乎 编辑:程序博客网 时间:2024/06/05 12:02

在Lua中,函数是对语句和表达式进行抽象的主要方法,既可以用来处理一些特殊的工作,也可以用来计算一些值。

函数定义

[plain] view plain copy
  1. optional_function_scope function function_name(argument1,argument2,...,argumentn)  
  2.     function_body  
  3.     return result1,result2,...resultn  
  4. end  
optional_function_scope: 该参数是可选的指定函数是全局函数还是局部函数,为设置该参数表示为全局函数,如果需要设置函数为局部函数需要使用关键字local

Lua函数可以返回多个值,每个值以逗号隔开。

[plain] view plain copy
  1. -- 函数返回两个值的最大值  
  2. function max(num1,num2)  
  3.     if(num1>num2)  
  4.     then  
  5.         result=num1  
  6.     else  
  7.         result=num2  
  8.     end  
  9.     return result  
  10. end  
  11.   
  12. print("bigger",max(10,4))  
  13. print("bigger",max(1,3))  


Lua中我们可以将函数作为参数传递给函数。

[plain] view plain copy
  1. myprint=function(param)  
  2.     print("this is print function -   ##",param,"##")  
  3. end  
  4.   
  5. function add(num1,num2,functionPrint)  
  6.     result=num1+num2  
  7.     -- 调用传递的函数参数  
  8.     functionPrint(result)  
  9. end  
  10.   
  11. myprint(10)  
  12. -- myprint函数作为参数传递  
  13. add(2,5,myprint)  


多返回值

Lua函数可以返回多个结果值,比如string.find,其返回匹配串“开始和结束的下标”(如果不存在匹配串返回nil)

[plain] view plain copy
  1. s,e=string.find("www.baidu.com","baidu")  
  2. print(s,e)  


Lua函数中,在return后列出要返回的值的列表即可返回多值。

[plain] view plain copy
  1. function maximum(a)  
  2.     local mi=1     --最大值索引  
  3.     local m=a[mi]  --最大值  
  4.     for i,val in ipairs(a) do  
  5.         if val>m then  
  6.             mi=i  
  7.             m=val  
  8.         end  
  9.     end  
  10.     return mi,m  
  11. end  
  12.   
  13. print(maximum({8,10,23,12,5}))  


可变参数

Lua函数可以接受可变数目的参数,和C语言类似在函数参数列表中使用三点(...)表示函数有可变的参数。

Lua将函数的参数放在一个叫arg的表中,#arg表示传入参数的个数。

[plain] view plain copy
  1. function average(...)  
  2.     result=0  
  3.     local arg={...}  
  4.     for i, v in ipairs(arg) do  
  5.         result=result+v  
  6.     end  
  7.     print("argument count is "..#arg)  
  8.     return result/#arg  
  9. end  
  10.   
  11. print("average is ",average(10,5,3,4,6))  



转自:点击打开链接


原创粉丝点击