当前位置: 首页 > news >正文

泰州网站建设报价邯郸建公司网站价格

泰州网站建设报价,邯郸建公司网站价格,网站建设意义模板,广告设计昵图网目录 简述如何集成?如何使用序列化 反序列化 参考 简述 项目里需要使用LUA脚本将数据记录到文件,要方便的增加、查找、删除,要方便的加载与存回。 使用序列化/反序列化 lua table可以很容易实现这些功能。 序列化将table转换为字符串 反序列…

目录

  • 简述
  • 如何集成?
  • 如何使用
      • 序列化
    • 反序列化
  • 参考

简述

项目里需要使用LUA脚本将数据记录到文件,要方便的增加、查找、删除,要方便的加载与存回。
使用序列化/反序列化 + lua table可以很容易实现这些功能。
序列化将table转换为字符串
反序列化将table从字符串中恢复出来

在这里插入图片描述

如何集成?

进入https://github.com/pkulchenko/serpent,下载serpent.lua, 将这个文件复制到lua可见的地方,比如工程目录一级路径。我这里放到了LUA的同级路径,通过测试发现可以require到这个模块。
在这里插入图片描述

如何使用

序列化或者反序列化之前,要先加载serpent模块

serpent_handle = require "serpent"
assert(serpent_handle)

序列化

首先,我们构建一个即将序列化的table,table中包含按照下标顺序递增的数据,包含字典数据,包含子表,内容如下

local Send_Table = {1,2,3,["name"] = "winston",age = 16,child_table = {hair_length = 1000,hair_color = "Black"}
}

serpent提供三种序列化API,dump,line, block,三者没有太多的区别,dump是全功能的,line和block没有办法做表的自我引用。
向这些函数中输入一个表作为形参,函数将会返回序列化之后的字符串
我们把每一种都打印出来观察一下

--store_string = serpent_handle.dump(Send_Table)
--print(store_string)do local _={[1]=1,[2]=2,[3]=3,name="winston",age=16,child_table={hair_color="Black",hair_length=1000}};return _;end
--store_string = serpent_handle.line(Send_Table)
--print(store_string){1, 2, 3, age = 16, child_table = {hair_color = "Black", hair_length = 1000} --[[table: 000002a2d1245120]], name = "winston"} --[[table: 000002a2d12458a0]]
--store_string = serpent_handle.block(Send_Table)
--print(store_string){1,2,3,age = 16,child_table = {hair_color = "Black",hair_length = 1000} --[[table: 0000028afdd050e0]],name = "winston"
} --[[table: 0000028afdd05a20]]

可以看出,dump似乎是一个函数,返回定义的local表_
line像是把表的内存都定义到了,不知道有什么用,所有信息记录到一行。
block就是line插入回车的版本。

拿到这些字符串之后,我们就可以将其存入文件保存下来了,文件I/O不在本文讨论范围,参考https://www.runoob.com/lua/lua-file-io.html

好吧,为了下一节的流畅叙述,还是贴个代码

file_handle = io.open("store.txt", "w+")
io.output(file_handle)
io.write(store_string)
io.close()

#

反序列化

我们把store.txt里的内容修改一下,
在这里插入图片描述
我们希望把修改过的数据反序列化到另一个表Recv_Table里,并且打印各个成员
反序列化使用如下:反序列化只有一个形参string,有两个返回值ok和res。ok指示反序列化是否成功,res是反序列化后的表

ok, res = serpent.load(string)

测试代码如下:

serpent_handle = require "serpent"
assert(serpent_handle)file_handle = io.open("store.txt", "r")
io.input(file_handle)
local ok, Recv_Table = serpent_handle.load(io.read("a*"))
io.close()print("Recv_Table[1]:"..Recv_Table[1])
print("Recv_Table[2]:"..Recv_Table[2])
print("Recv_Table[3]:"..Recv_Table[3])
print("age:"..Recv_Table.age)
print("hair_color:"..Recv_Table.child_table.hair_color)
print("name:"..Recv_Table.name)

现象如下
在这里插入图片描述

参考

更多信息,参考https://github.com/pkulchenko/serpent

http://www.yayakq.cn/news/499326/

相关文章:

  • 网站开发价格对比团购网站建立
  • 在线做简单的网站吗dw做网页教程
  • 网站建设原型php用什么做网站服务器
  • 网站建设课程学习家装风格效果图大全
  • 移动端网站构成要素优就业seo怎么样
  • 成品网站怎么新建网页网站优化什么意思
  • 太原网站制作哪家好淮北市建筑
  • 专业信息门户网站定制网站建设访问人群
  • 连锁品牌网站建设免费注册邮箱
  • 九江建网站报价淘宝网站建设的目标
  • 上海建科建设监理网站高端电子网站建设
  • 一个公司优化需要做多少个网站爱搜索中级网站建设
  • 佛山营销型建设网站wordpress 增加作者
  • 网站制作宜昌怎么做?wordpress评论换行
  • 怎样免费网站建设ui设计师需要考什么证书
  • 网站建设公司 南京网站设计设计目的
  • 高端画册定制印刷公司北京seo排名厂家
  • 科协网站建设建议wordpress忘记密码如何重新安装
  • 网站静态页面模板平面设计的网站
  • 昆明微网站搭建网站开发台州
  • 网站开发技术参数怎么做解析视频网站
  • 网站建设制作一个网站的费用深圳企业所得税怎么征收
  • 设计专业网址东营做网站seo
  • 同德县wap网站建设公司中企动力全球邮箱
  • 山东临沂市需要建设网站的公司网站建设与网页设计考试题
  • 成都上市的网站建设公司建立企业网站的形式有
  • 网站开发流程包括哪几个步骤?洛阳市河阳建设工程有限公司网站
  • 网站开发文档下载河北省住房城乡建设局网站
  • 网站建设副业浏览器被2345网址导航
  • 新网站建设流程深圳公司注册的服务机构