热门搜索 :
考研考公
您的当前位置:首页正文

Lua base select()

来源:东饰资讯网
选择.jpg

前言

今天这个函数看到的时候,第一印象就是想到了c语言中大名鼎鼎的select函数,因为他们函数名是一样的,并且lua也是用c语言实现的,所以我认为这个函数跟那个是相同的,可是转念一想lua好像没有什么和网络相关的函数,然后查了一下这个函数的定义,发现这个函数真的就是字面的意思,起到一个选择的作用,我们一起来看一下函数的用法。

内容


select()

  • 原型:select(index, ···)
  • 解释:如果index是一个数字,函数返回参数指定索引后的所有参数(包括当前索引的参数),否则参数index必须是一个字符串#,这时函数返回它接收到的额外参数总共的个数。

usage

  • 首先我们新建一个文件将文件命名为selecttest.lua然后编写代码如下:

-- 先来试试数字索引
print("\nthe number index result:")
print(select(2, 'b', 'c', 'd', 'e'));

-- 无效的索引
print("\nthe number index of invalid result:")
print(select(20000, 'b', 'c', 'd', 'e'));

-- 字符串#索引
print("\nthe '#' index of invalid result:")
print(select('#', 'b', 'c', 'd', 'e'));


-- 再来看一个常用的例子
function print_multi_argv(...)
    print("\narg list is")
    for i = 1, select('#', ...) do      -- get the count of the params  
        local cur_arg = select(i, ...); -- select the param  
        print(cur_arg);
    end  
end

-- 试验一下打印多个参数
print_multi_argv(1, 2, 3, 'a', 'b', 'f', 't')

  • 运行结果
base_select.png

总结

  • 学习这个函数的时候要注意和C语言中的select网络相关的函数区分开,它们两个没有一丁点关系。
  • 在打印多个参数的例子宏我们利用了一个返回值,实际上函数每次都会返回多个参数,只不过那些多余的参数被我们省略了。
  • 函数的参数index只能接收一个字符串类型的参数,那就是'#',除此之外只能接收数字,如果输入的索引值过大,则不会有结果,但是如果输入负数,则会引发程序错误。
Top