Lua学习教程之 可变参数数据打包与解包

利用table的pack与unpack进行数据打包与解包,测试代码如下:

print("Test table.pack()----------------");

function printTable ( t )
	if type(t) == "table" then
		for k,v in pairs(t) do
			printTable(v);
		end
	else
		print(t);
	end
end

local packData =function( ... )

	local arg = table.pack(...);

 	--arg.n 得到可变部分的参数的个数
 	-- print("arg.n:", arg.n)

 	for k,v in pairs(arg) do
 		print("----------------");
 		print(k,v);
 		printTable(v);
 		print("----------------");
 	end

    return arg;
end

packData({type=100,param={"param1", "param2", "param3"}});
-- packData("param1", "param2", "param3","param4","param5");

print("\nTest table.unpack()----------------");
local data = {"AA", "BB", "CC", "DD"}
print(table.unpack(data))
print(table.unpack(data, 2))
print(table.unpack(data, 2, 3))

打印数据:

时间: 2024-08-02 06:59:31

Lua学习教程之 可变参数数据打包与解包的相关文章

struct--二进制数据结构的打包与解包

介绍 struct模块包括一些函数,这些函数可以完成字节串与原生Python数据类型(如数字和字符串)之间的转换 函数与Struct类 struct提供了一组处理结构值的模块级函数,另外还有一个Struct类,这与处理正则表达式的compile类似. 类比正则:re.match(pattern, text) 使用这种模块级别的函数时,会先将pattern进行编译转换,这个转换是耗费资源的.因此可以先对pattern进行一个编译,comp = re.compile(pattern),comp.ma

web socket RFC6455 frame 打包、解包

#ifndef __APP_WEBSOCKET_FRAME_H__ #define __APP_WEBSOCKET_FRAME_H__ #include "memory.hpp" class buffer; struct websocket_frame { websocket_frame(); ~websocket_frame(); static const unsigned int fix_min_len = 2; static const unsigned int fix_mask

python之打包,解包

#coding:utf-8 #字符串,列表,元组打包与解包 aString = 'abc' aList = [1, 2, 3] aTuple = 'a', 'A', 1 print('Unpacking string......') first, second, third = aString print("string values:", first, second, third) print('\nUnpacking list......') first, second, thir

Java基础学习191221(可变参数,数组,Array类,稀疏数组,继承重写多态,抽象类,接口)

Java基础学习 可变参数 在方法声明中,在指定参数类型后加一个省略号(...). 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数.任何普通参数都必须在它之前声明. public class printMax { public static void main(String[] args) { printMax(1,5,8,78,415,15); } public static void printMax( double... numbers){ if (numbers.length

Lua function函数,可变参数, 局部函数,尾递归优化

在Lua中,函数是作为"第一类值"(First-Class Value),这表示函数可以存储在变量中,可以通过参数传递给其他函数,或者作为函数的返回值(类比C/C++中的函数指针),这种特性使Lua具有极大的灵活性. Lua对函数式编程提供了良好的支持,可以支持嵌套函数. 另外,Lua既可以调用Lua编写的函数,还可以调用C语言编写的函数(Lua所有的标准库都是C语言写的). 定义一个函数 function hello() print('hello') end hello函数不接收参数

c#基础学习(0724)之可变参数、ref和out

params可变参数,无论有几个参数,必须出现在参数列表的最后,可以为可变参数直接传递一个对应类型的数组 #region 可变参数 //1.如果方法有多个参数,可变参数可以作为最后一个参数 //2.可变参数可以传递参数也可以不传递参数,如果不传递参数,则args数组为一个长度为0的数组 //3.可变参数可以直接传递一个数组进来 static void Test(string msg,params int[] args) { //如果可变参数传值为null时,需要加上判断 if(args!=nul

Linux学习笔记(二十)文件压缩 zip压缩、tar打包、打包、解包

一.zip压缩 首先安装zip与unzipyum install -y zip/unzip zip 1.txt.zip 1.txt 压缩文件1.txt,压缩文件名称为1.txt.zip zip -r 123.zip 123/ 压缩文件夹123/ 指定名称123.zip unzip 1.txt.zip zip压缩文件并不会删除源文件,解压时会提示是否覆盖已存在的文件 unzip 123.zip -d /root/456/ 解压123.zip文件到/root/456/ 目录下 unzip -l 12

python的参数类型与时序解包

python的四种参数类型: 1.必填参数 fun1(a,b,c) 2.默认值参数 fun2(a=1,b=2,c=3) 3.可变参数 fun3(*args) 4.关键字参数 fun4(**kargs) 定义顺序为:def fun_name(a,b=5,*args,**kargs):,定义时前面的“*”表示为可变参数.“**”表示关键字参数,调用时“*”.“**”表示时序解包 举例如下: 原文地址:https://www.cnblogs.com/liuchunxiao83/p/12306383.h

CentOS7 tar打包工具 打包,解包,打包压缩,打包解压缩

tar命令 選項與參數: -c :建立打包檔案,可搭配 -v 來察看過程中被打包的檔名(filename) -t :察看打包檔案的內容含有哪些檔名,重點在察看『檔名』就是了: -x :解打包或解壓縮的功能,可以搭配 -C (大寫) 在特定目錄解開 特別留意的是, -c, -t, -x 不可同時出現在一串指令列中. -z :透過 gzip 的支援進行壓縮/解壓縮:此時檔名最好為 *.tar.gz -j :透過 bzip2 的支援進行壓縮/解壓縮:此時檔名最好為 *.tar.bz2 -J :透過 x