关于lua的select函数,是可以用于计算参数个数的或者获取指定索引之后的参数;当select函数用于计算传递进来的参数个数时需要在第一个参数位置使用
#
符号;否则就需要使用数字
n
来进行获取某个指定索引后的参数;我看这部分教程时发现很多都是把
select(n,...)
这个函数说是返回指定索引的参数,但是实际操作中返回的是
第n个索引后的所有参数
;下面是两种用法的操作分析
一、用计算传递进来的参数个数
在普通函数上使用的select
这是计算传递进来的参数个数
print (select("#",1,2,"e",3)) ----->输出结果为4
注意这里计算的话,是不能计算数组和表里面的元素个数的
a = {1,2,3,4}
print (select("#",a)) ------>输出结果为1,这里会将数组a看作为一个参数进行计算,因此输出1
在变参函数上使用的select函数,下面是一个用于计算接收到的参数个数的变参函数
function cal_sum(...)
return select("#",...) ------->返回计算到的参数个数
end
print(cal_sum(1,2,3,4,5,5)) ------->打印计算
二、输出第n个索引后的所有参数
这一部分需要着重看一下,一开始我也是对于这方面不太懂;因为很多教程都是写返回的是一个参数;但是使用print函数直接对其结果进行打印时发现打印的是指定索引后的所有值;一共可以使用两种方法进行打印zai
1、通过直接使用print函数打印其返回值
function cal_sum(...)
print(select(3,...) )
end
print(cal_sum(1,2,3,4,5,5))
2、通过使用参数接收其返回值再进行打印;但是这种方法需要预先知道返回的参数个数,否则接收的变量少于返回的变量会导致后面的无法接收到;或者定义的变量多与返回的值将会导致没有接收到返回值的变量为nil
function cal_sum(...)
a,b,c,d = select(3,...)
print(a,b,c,d)
end
print(cal_sum(1,2,3,4,5,5))