• 新浪微博:
  • 微信 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:03-18

按键精灵安卓版
立即下载

软件版本:3.3.8
软件大小:62.5M
更新时间:12-18

按键精灵iOS版
立即下载

软件版本:1.7.1
软件大小:29.2M
更新时间:06-22

最新企业版UiBot
立即下载

软件版本:3.3
软件大小:282M
更新时间:08-06

快捷导航

登录 后使用快捷导航
没有帐号? 注册

登录 注册
发新话题 回复该主题

果壳lua教程:变参函数(第四集-第二节) [复制链接]

1#


>果壳王子:小茗同学,上一节课我们有讲到如何通过遍历表的方式来实现对变参参数的访问,以下便是上节课的代码,我们来复习一下:

  1. function newtable(a,b,...)

  2. tbl = {...}

  3. for i = 1,#tbl do

  4. print(tbl[i])

  5. end

  6. end
复制代码

>正如您所看到的,在函数体中我们声明了一个tbl表,并给表赋予了传进来的...,如此便表示用一个表接收了所有的变参参数(无论参数数量是多少),然后接下来就用一个简单的for循环来便利tbl表,将所接收的所有变参参数都遍历出来了。

小茗同学:嗯!很清晰滴记得呐,这便是上节课的要义!

果壳王子:辣么!本节课要教大伙另一种访问变参参数的方法!请看代码:

  1. function printargs(...)

  2. local num_args = select("#",...)

  3. for i=1,num_args do

  4. local arg = select(i,...)

  5. print(i,"=",arg)

  6. end

  7. end

  8. printargs("a","b","c")
复制代码

>小茗同学:咦,这段代码中的select函数是什么意思呢?

果壳王子:select函数的用途是,返回指定键所对应的值。假如我们把...当作一个表来看待,那么printargs("a","b","c")所组合而成的表,就等同于:tbl={[1]="a",[2]="b",[3]="c"},此时我们若想输出"a"则调用print(tbl[1])即可。这么说来,1便是"a"的键,"a"便是1的值。

select函数有俩参数,第一个为键,第二个为表(本例中的表用...代替)。

于是,只需通过select(i,...)即可返回...表中指定键的值了!

小茗同学:那么select("#",...)又是啥意思咧?

果壳王子:问得好!在select("#",...)中,"#"即代表返回整个...表中元素的总个数!

小茗同学:辣么!printargs("a","b","c")所传递过去的是三个元素组成的...表,所以select("#",...)的返回值就是3喽?

果壳王子:完全正确!在本例中,我们用num_args变量来接收select("#",...)的返回值,然后接下来通过一个for循环实现从i到num_args的遍历,i的初值为1,num_args的值为3,于是for循环总共循环3遍,每循环一遍输出一个i键所指定的元素值。

最终的输出结果是:


1=a

2=b

3=c


本主题由 按键合作伙伴 果壳王子 于 2020/3/31 22:47:12 执行 设置高亮 操作
果壳学院 ● 疯狂编程 QQ交流群: 327610461 (编程要从娃娃抓起)

  果壳热编程教育网:www.guokeHOT.com ←点击登录,即刻学习!

发新话题 回复该主题