`

Lua程序设计 变长参数

 
阅读更多

Lua中的函数还可以接受不同数量的实参。例如:在调用print时可以传入一个、两个或多个实参。

function add(...)
local s = 0
  for i, v in ipairs{...} do   --> {...} 表示一个由所有变长参数构成的数组
    s = s + v
  end
  return s
end
print(add(3,4,5,6,7))  --->25

--还可以用下面的方式,获取变长参数的数据
local argf = ...
local x, y, z = unpack(argf)

 

参数中的三个点(...)表示该函数可接受不同数量的实参。当这个函数被调用时,它的所有参数都会被收集到一起,这部分收集起来的实参称为这个函数的“变长参数”。

         一个函数要访问他的变长参数时,仍需要用到3个点(...),只是此时的3个点作为一个表达式来使用的(如上)。表达式“...”的行为类似于一个具有多重返回值的函数,它返回的是当前函数的所有变长参数。

 

function fwrite(fmt, ...)  --->3点之前有个固定的参数fmt。具有变长参数的函数同样也可以用拥有任意数量的固定参数,但是固定参数必须放在变长参数之前。
                                lua会将前面的实参赋予固定参数,而将余下的实参(如果有的话)视为变长参数。
 return io.write(string.format(fmt, ...))   
end 

fwrite()  --->fmt = nil,没有变长参数。
fwrite("a")   --->fmt = "a",没有变长参数。
fwrite("%d%d", 4, 5) ---->fmt = "%d%d",变长参数= 4 和 5

 

通常一个函数在遍历其变长参数时只需要使用表达式{...},这就像访问一个table一样,访问所有的变长参数。

       函数select用于访问变长函数中有nil值的情况:

       调用select时,必须传入一个固定的实参selector和一系列变长参数。如果selector为数字n,那么select返回它的第n个可变实参;否则selector只能为字符串“#”,这样select会返回变长参数的总数。

 

for i =1 ,select("#", ...) do
  local arg = select(i, ...)  --->得到第i个变长参数对应的可变实参。
    <循环体>
end

 

分享到:
评论

相关推荐

    LUA程序设计教程LUA程序设计教程LUA程序设计教程

    LUA程序设计教程LUA程序设计教程LUA程序设计教程LUA程序设计教程LUA程序设计教程LUA程序设计教程LUA程序设计教程LUA程序设计教程LUA程序设计教程LUA程序设计教程LUA程序设计教程LUA程序设计教程LUA程序设计教程

    LUA 程序设计

    LUA 程序设计 LUA 程序设计 LUA 程序设计 LUA 程序设计

    Lua程序设计(第四版)

    Lua程序设计第四版,带书签,英文高清, MOBI PDF两个版本

    lua程序设计中文版

    lua程序设计中文lua程序设计中文lua程序设计中文版

    lua程序设计电子书

    lua程序设计电子书 lua入门经典书籍

    lua程序设计.pdf

    lua开发文档,当今武林,派别林立,语言繁杂,林林总总不计其数。主流文化的C/C++、Java、 C#、VB;偏安一隅的Fortran;动态语言中的Perl、Tcl、Ruby...可欣赏一下BrainFuck语言1的Hello World程序,语言本身依如其名

    Lua程序设计 (Programming in Lua) [电子书集合].rar

    Lua程序设计 (Programming in Lua) [电子书集合].rar ================================== 压缩包中包函如下内容: Programming_in_Lua_First.txt (官方在线第一版地址) Programming_in_Lua_Second.pdf (官方英文...

    Lua程序设计&5.1中文手册&5.1源码

    Lua程序设计 5.1中文手册 5.1源码 Lua程序设计 5.1中文手册 5.1源码 Lua程序设计 5.1中文手册 5.1源码

    lua程序设计及lua中文手册

    lua程序设计,lua中文手册,lua相关资料

    Lua程序设计和lua-5.1中文手册

    lua-5.1中文手册.chm Lua程序设计.chm

    LUA程序设计一书的源码

    《Lua程序设计》(第2版)介绍了Lua语言所具有的功能,并使用大量示例来演示如何将它们运用到实际的任务中。深入地介绍了Lua中唯一的数据结构 table,还讨论了数据结构、持久化、包和面向对象编程。展示了Lua的标准库...

    Lua程序设计_书籍

    《Lua程序设计》是(巴西)莱鲁萨利姆斯奇编著的一本图书,该书介绍了Lua语言所具有的功能,并使用大量示例来演示如何将它们运用到实际的任务中。深入地介绍了Lua中唯一的数据结构table,还讨论了数据结构、持久化、...

    Lua 程序设计

    作为中文版的《Programming In Lua》,本书遵循其第二版的书名规则,命名为《Lua 程序设计》。 本书主要针对的 Lua 版本号为 5.0,到目前为止尚无出版信息可查。正在发行中的《Lua 程序设计》第 二版主要针对 Lua ...

    《lua程序设计》chm

    《lua程序设计》 在线查看:http://book.luaer.cn 由http://www.luaer.cn 中国lua开发者友情提供!

    Lua程序设计_高清

    Lua程序设计,很适合想学Lua的同学学习,同时适合搞Unity3D或者redis的同学学习

    lua程序设计和参考手册

    如何让EditPlus支持LUA; lua-5.1.4.tar.gz; lua程序设计中文版.pdf; Lua+5.1+参考手册.pdf; Lua一些基本函数.txt; Programming_in_LUA中文版.txt; Lua 5_1 参考手册.mht;

    Lua程序设计.pdf_lua_nginx_

    lua程序设计包含了lua的基础和进阶方面的只是,循序渐进,适合新手学习

    Lua程序与设计第四版 英文原版

    Lua程序与设计第四版 英文原版 epub格式 可以用浏览器打开 带书签目录

    lua程序设计第二版+第四版

    lua程序设计第二版中文+第四版英文,均包含完整书签。

Global site tag (gtag.js) - Google Analytics