lua函数精讲(一)

函数的用途:
1.完成指定的任务,这种情况下作为调用语句使用。
2.计算并返回值,这种情况下,函数作为赋值语句的表达式使用。

函数的参数为空,必须使用()表示函数调用。例外:当函数只有一个参数,并且这个参数是字符串或表构造时,()是可选的。
lua提供了面向对象调用函数的语法
o:foo(x)与o.f(o,x)是等价的。

lua函数的实参与形参的匹配与赋值语句类似,多余部分被忽略,缺少部分nil补足。

lua函数可以返回多个值,return后列出要返回值的列表即可返回多值
s, e = string.find("hello lua", "lua")

那么,lua是如何调整函数返回值的个数来适应调用环境的呢?
1. use as statement,所以返回值被忽略。
2. use as expression
  • 当作为表达式最后一个参数或仅有的一个参数时,根据变量个数,函数尽可能多地返回多个值,不足补nil,超出舍去。
  • 其他情况函数调用返回第一个值(如果无返回值为nil)
  • 函数调用作为函数参数被调用时,和多值赋值相同
  • 函数调用在表构造中初始化时,和多值赋值相同
  • return f(); f()返回所有值。可以使用括号强制返回一个值return (f())
c语言中,可以使用函数指针来调用可变的函数,可以声明参数可变的函数,但不能两者同时可变。
Lua可以这样来调用可变参数的可变函数:f(unpack(a))
unpack接受一个数组作为输入参数,返回数组所有的元素。注意是数字,返回ipair遍历结果
f = string.find
a = {"hello lua", "lua"}
print(f(unpack(a)))

可变参数使用...表示,Lua将可变参数放在arg的表中,含有一个域n表示参数的个数
( 5.1+:用...取代了arg。如:
function printArgLen(...)
print(select("#", ...))
end
)

function select(n, ...)
     return arg[n]
end

给函数参数命名:可以把表作为函数的唯一参数来实现命名参数的功能。
rename {old="temp.lua", new="temp1.lua"}
function rename(arg)
     os.rename(arg.old, arg.new)
end
当参数比较多,或容易混淆时,可以采用命名参数。

------------------
2015/3/3:新版lua没有名叫arg的表了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
 本套课程分为基础与中级两部分,分别就lua语言的各方面知识点进行探讨,学习完本套课程,对于后续Xlua(Tolua等框架)技术的学习提供强大的语言技术保证。       本套lua课程采用入门与商业级两种开发IDE进行教学:入门级的SciTE内置IDE与商业级的IDEA lua插件。本套课程学习完毕,对于除了传统手游外,在VR、AR、商业级大型应用程序、嵌入式设备开发等领域都有较强的指导作用。           《lua中级篇》分为:“函数的进阶”、“字符串进阶”、“Table进阶”、“元表”、“OOP面向对象”、“协同程序”、“IO操作”、“调试与运行”等八个大的章节,详细深入讲解lua开发的方方面面。        内容包含lua可变参数、闭包、模块、函数尾调用、字符串模式匹配、字符串不变性原理、矩阵、链表、元表详解与应用、协同的生命周期与生产消费者问题、lua文件各种读写操作、lua执行外部代码与错误异常处理垃圾收集机制等。       最后,lua中级篇的学习,对于广大学员开发商业级lua热更新技术,具有不可替代的重要作用! 热更新系列(技术含量:中高级):B:《热更新框架设计之Xlua基础视频课程》https://edu.csdn.net/course/detail/27110C:《热更新框架设计之热更流程与热补丁技术》https://edu.csdn.net/course/detail/27118D:《热更新框架设计之客户端热更框架(上)》https://edu.csdn.net/course/detail/27132E:《热更新框架设计之客户端热更框架(中)》https://edu.csdn.net/course/detail/27135F:《热更新框架设计之客户端热更框架(下)》https://edu.csdn.net/course/detail/27136 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值