Lua base select()

作者: AlbertS | 来源:发表于2016-11-19 10:48 被阅读484次
选择.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只能接收一个字符串类型的参数,那就是'#',除此之外只能接收数字,如果输入的索引值过大,则不会有结果,但是如果输入负数,则会引发程序错误。

相关文章

  • Lua base select()

    前言 今天这个函数看到的时候,第一印象就是想到了c语言中大名鼎鼎的select函数,因为他们函数名是一样的,并且l...

  • Lua base tonumber()

    前言 重新开始更新的第一天,我们来聊一个轻松一点的函数,tonumber()这是个将指定参数转换成数字的函数,利用...

  • Lua base type()

    前言 今天学习的这个函数在lua中绝对很常用,用来查询当前变量是什么类型,有点反射机制的意思。那么知道变量是什么类...

  • Lua base tostring()

    前言 前面一篇文章我们介绍了把参数转换成数字的函数,今天来看一个把参数转换成字符串的函数,话说这个函数我在写lua...

  • Lua base setfenv()

    前言 今天来这个函数是用来设置当前运行环境的,也就是和我们之前讲过的getfenv函数是相关的,当时在学习getf...

  • Lua base setmetatable()

    前言 记得原来我们总结过一个查询元表的函数getmetatable(), 但是有查询必然会有设置,今天我们就一起来...

  • Lua base pcall()

    前言 作为苦逼的程序猿大周末的时候也必须不能忘记学习,今天我们来看一个调用其他函数的函数,这个函数其实就是给其他函...

  • Lua base rawequal()

    前言 今天这个函数看起来非常的简单,但是却花费了我很长的时间,作用就是比较一下两个值是不是相等,那么时间花在哪了呢...

  • Lua base ipairs()

    前言 今天来看一个老朋友,这个函数在我们使用刚开始学习lua的时候基本就使用过,通常就是在遍历table的时候使用...

  • Lua base load()

    前言 今天这个函数是一个非常非常危险的函数,我的电脑今天因为这个函数崩溃了两次,奇怪的是这个函数虽然在lua5.1...

网友评论

    本文标题:Lua base select()

    本文链接:https://www.haomeiwen.com/subject/tqaspttx.html