Lua学习笔记-函数

 

1.函数声明语法:

function func_name (arguments-list)
statements-list;
end;

 

首先说明一点,lua中函数是第一类值,和其他的类型(table,number,boolean等)一样,所以可以作为函数的参数,table的键和值。

 

2.函数调用

 直接使用函数名称调用,参数按照形参表里面依次匹配,如果实参多于形参,则多余实参被丢弃;如果实参少于形参,那么剩下的形参会被赋值为nil。

function f(a, b) 
return a, b 
end

CALL  PARAMETERS
f(3)  a=3, b=nil
f(3, 4)  a=3, b=4
f(3, 4, 5) a=3, b=4  (5 is discarded)

 

另外函数调用时如果参数为字符串或者表构造时,可以不写括号,用法如下。吐槽一下,这点设计看似方便,实则是阅读代码的灾难。实际上多打一对括号并不会花很多力气,但是代码的阅读性看起来就好很多了。

function func(string)
print(string)
end

func "123"
func {1,2,3}

输出结果
123
table: 008DB3B0

 

3. 多返回值

 这点较为简单,需要注意的是如果调用的时候在函数加一个括号,只会返回第一个值。

function f(a, b)
return a,b
end

print(f(1,2))
print((f(1,2)))


输出结果
1    2
1

 

4. 可变参数

 Lua 函数可以接受可变数目的参数,和 C 语言类似在函数参数列表中使用三点(...)表示函数有可变的参数。Lua 将函数的参数放在一个叫 arg 的表中,除了参数以外,arg表中还有一个域 n 表示参数的个数。

function g (a, b, ...) 
end

CALL  PARAMETERS
g(3)  a=3, b=nil, arg={n=0}
g(3, 4)  a=3, b=4, arg={n=0}
g(3,4,5,6) a=3, b=4, arg={5,6;n=2}

 

5. 命名参数

 命名参数使用表传递参数,这个有点鸡肋,因为如果没有函数的说明,根本不知道参数是什么,而且函数对于参数的依赖度过高,必须进行参数判断。

 

6. 闭包

 这个具体应用还不太清楚,之后补充。

转载于:https://www.cnblogs.com/InitialD/p/7422202.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值