首页 > 其他分享 >lua可变参数

lua可变参数

时间:2024-07-28 13:40:03浏览次数:8  
标签:function ... end unpack lua 参数 可变 print local

遍历可变参数

local function Test1(...)
    local argCnt = select("#", ...)
    for i=1,argCnt do
        local item = select(i, ...)
        print(i, item)
    end
end
Test1(4, 5, 6)

 

遍历可变参数方式2

local function Test2(...)
    local args = {...}
    for i, v in ipairs(args) do
        print(i, v)
    end
end
Test2(7, 8, 9)

 

可变参数返回

local function Test3(...)
    return ...
end    
print(Test(1, 2, 3))

 

可变参数传递

local function Test4(...)
    print("var args:", ...)
end

local function Test5(...)
    Test4(...)
end

Test5(1, 2, 3)

 

关于select函数

print(select(3, "a", "b", "c", "d")) --返回第3~最后一个元素,即打印:c d

local function Test7(...)
    local i, j, k = select(2, ...)
    print(i, j, k)
end
Test7("a", "b", "c", "d", "e") -- i, j, k分别为b, c, d

 

关于pack和unpack函数

1) lua 5.1:unpack在全局空间_G里面;没有pack函数,可以用{...}

2) 5.2及之后的版本:unpack移到了table.unpack中;有table.pack,也支持{...}

 

unpack的作用:将table解包为独立的多个数据,比如可以将table解包后传给可变参数

local function Test6(...)
    print("var args:", ...)
end

local data = {"a", "b", "c"}
Test6(unpack(data)) -- lua 5.1
Test6(table.unpack(data)) -- lua 5.2及之后的版本

 

 

参考 

Lua可变参数 - 简书 (jianshu.com)

lua中的可变长参数...,pack,unpack,select方法 - 哔哩哔哩 (bilibili.com)

 

标签:function,...,end,unpack,lua,参数,可变,print,local
From: https://www.cnblogs.com/sailJs/p/18318615

相关文章

  • LimeTabular TypeError:__init__() 缺少 1 个必需的位置参数:'model'
    我已经开始学习Lime了。当我使用LimeTabular形式的Interpret时,我遇到一个问题,我按照标准完成了功能,但它不起作用。错误是TypeError:init()缺少1个必需的位置参数:'model'#%%ImportsfromutilsimportDataLoaderfromsklearn.ensembleimportRandomForestCla......
  • kafka 设置消费者多线程参数说明
    一、设置消费者多线程 参数privatestaticfinalintCONSUMER_THREAD_NUM=1;//订阅topicMap<String,Integer>topicCountMap=Collections.singletonMap(topic,CONSUMER_THREAD_NUM);Map<String,List<KafkaStream<byte[],byte[]>>>messageStr......
  • 【变压器的开路和短路试验】提供从开路和短路试验中获得的结果电阻性和感性参数(Simuli
      ......
  • Python入门知识点 8--函数基础与函数参数
    一、初识函数(function)编程函数!=数学函数,里面的是逻辑功能,而不是套公式编程函数的作用是实现特定操作的一段代码有钱了给100个朋友都点一份这样的吃的,大家都是点一样的东西   1.薯条;   2.上校鸡块;   3.全鸡;一个个去点单会很麻烦这个时候就会用到套餐......
  • c语言模拟Python的命名参数
    最近在书里看到的,让c语言去模拟其他语言里有的命名函数参数。觉得比较有意思所以记录一下。目标众所周知c语言里是没有命名函数参数这种东西的,形式参数虽然有自己的名字,但传递的时候并不能通过这个名字来指定参数的值。而支持命名参数的语言,比如python里,我们能让代码达到这种效......
  • dataclass_transform() 得到了意外的关键字参数“field_specifiers”
    我正在尝试使用这个G2P包但我收到dataclass_transform()gotanunexpectedkeywordargument'field_specifiers'这个错误。我正在尝试运行他们在我的jupyter笔记本中运行后提供的示例代码。下面附有我收到错误的示例代码。有人可以帮我解决这个问题吗?......
  • Singledispatch 并将类型作为输入参数
    我希望能够做到这一点:fromtypingimportTypefromfunctoolsimportsingledispatchclassA:passclassB(A):pass@singledispatchdeffoo(arg):print('default')@foo.registerdef_(arg:Type[A]):print(arg)foo(A)foo(B)但是,我得到......
  • 如何注释可以转换为布尔值的参数?
    我开始进入python3.6中的类型提示(又名注释),并且我无法理解此功能的一些动态方面。我编写了以下代码段,我想添加注释和即使在查看了有关类型提示的文档后,也不知道如何实现。这是函数:defvalidate_expression(expression:?):try:assertexpressione......
  • Lua 语法之迭代器
    迭代器主要是用来遍历表的两个迭代器区别#ipairspairs索引必须数字且连续索引必须数字且连续索引可以随意从1开始到nil从1开始到nil从1开始到无其他索引字符索引不识别字符索引不识别字符索引识别关键字ipairs--#得到长度其实并不准确一般不......
  • Lua 语法_复杂类型表____数组与二维数组
    复杂数据类型Lua所有的复杂类型都是table(表)数组如何用Luatable(表)实现数组--lua表中没有具体的限制可以是数值,字符串,布尔值a={1,2,3,4,"洛溪",true,nil}--Lua中默认索引从1开始0如果没有自定义索引则为空nilprint(a[0])--#号时用的获取长度的关键字--......