lua 5.3新特性整理ing
函数相关
string.dump
string.dump()##
原型:string.dump (function)
解释:返回一个包含所给函数二进制描述的字符串,以至于在此之后可以使用函数loadstring()利用所得到的字符串来返回一个函数拷贝,需要注意的是函数只能是Lua函数并且没有upvalues(外部局部变量)。
使用方法 string.dump。
--自定义一个函数
function custom_func(num1, num2)
local ret = num1 + num2;
print("\nnum1 = "..num1)
print("num2 = "..num2)
print("num1 + num2 = "..ret)
end
-- 将函数序列化
local func_content = string.dump(custom_func)
print("\nfunc_content = "..func_content)
-- 将转化后的字符串写入文件
local outfile = io.open("dumptest.txt", "w")
local outnum = outfile:write(func_content)
outfile:close()
-- 从文件总读取内容
local infile = io.open("dumptest.txt", "r")
local incontent = infile:read("*a")
infile:close()
print("\ninput content is "..incontent)
-- 加载函数
local myfunc = loadstring(incontent)
-- 执行函数
myfunc(1, 1)
myfunc(3, 6)
-- 输出这个幸福的七月七
myfunc("7" ,".7")
print("\nthis is a happy day!")
print(os.date())
输出结果:

在调用了函数string.dump()之后函数custom_func()被转化成字符串保存在文件中,可以在使用时再取出来。
string.pack
参数
<: 设为小端编码
>: 设为大端编码
=: 大小端遵循本地设置
![n]: 将最大对齐数设为 n (默认遵循本地对齐设置)
b: 一个有符号字节 (char)
B: 一个无符号字节 (char)
h: 一个有符号 short (本地大小)
H: 一个无符号 short (本地大小)
l: 一个有符号 long (本地大小)
L: 一个无符号 long (本地大小)
j: 一个 lua_Integer
J: 一个 lua_Unsigned
T: 一个 size_t (本地大小)
i[n]: 一个 n 字节长(默认为本地大小)的有符号 int
I[n]: 一个 n 字节长(默认为本地大小)的无符号 int
f: 一个 float (本地大小)
d: 一个 double (本地大小)
n: 一个 lua_Number
cn: n字节固定长度的字符串
z: 零结尾的字符串
s[n]: 长度加内容的字符串,其长度编码为一个 n 字节(默认是个 size_t) 长的无符号整数。
x: 一个字节的填充
Xop: 按选项 op 的方式对齐(忽略它的其它方面)的一个空条目
' ': (空格)忽略
local text2 = "666"
--" > ",代表大端,s2表示加上2字节的头部长度,表示unsigned short
local text = string.pack(">s2", text2)
同时还有对应的string.packsize 方法等
2万+

被折叠的 条评论
为什么被折叠?



