Lua学习笔记(七) —— 数据持久化

本文深入探讨了Lua编程中的数据文件操作,包括dofile、loadfile、loadstring、require函数的应用,以及如何进行串行化以保存字符串、无环表和有环表。详细解释了各函数的特点和使用场景,提供了保存数据的有效方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 数据文件

1、 dofile函数 与loadfile函数

dofile当做lua运行代码的chunk的一种原始的操作。Dofile实际上是一个辅助的函数。真正完成功能的函数loadfile;与dofile不同的是loadfile编译代码成中间码并且返回编译后的chunk作为一个函数,而不执行代码;另外loadfile不会抛出错误信息而是返回错误代码,我们可以这样定义dofile

function dofile(filename)

 local f = assert(loadfile(filename))

return f()

end


2、 loadstring与loadfile

a) loadstring与loadfile相似,只不过它不是从文件里读入chunk,而是从一个串中读入。f = loadstring“I = i+1”

b) loadstring函数的功能强大,但使用时需多加小心。确认没有其它简单的解决问题的方法再使用。Loadfileloadstring都不会抛出错误,如果发生错误他们将返回nil加上错误信息。另外,loadfileloadstring都不会 有边界效应产生,他们仅仅编译chunk成为自己内部实现的一个匿名函数。通常对他们的误解是他们定义了函数,lua中的函数定义是发生在运行时的赋值而不是发生在编译时

c) loadstring通常用于运行程序外部的代码,比如运行用户自定义的代码。注意:loadstring期望一个chunk,即语句。如果想要加载表达式,需要在表达式前加return,那样将返回表达式的值。Loadstring返回的函数和普通函数一样,可以多次被调用

 

3、 requie和dofile

a) require会搜索目录加载文件

b) require会判断是否文件已经加载避免重复加载同一文件。由于上述特征,requireLua中是加载库的更好的函数

c) require使用的路径和普通我们看到的路径还有些区别,我们一般见到的路径都是一个目录列表。Require的路径时一个模式列表,每一个模式指明一种由虚文件名转成实文件名的方法。更明确地说,每一个模块指明一种由虚文件名转成实文件名的方法。更明确的说,每一个模块时一个包含可选的问号的文件名。匹配的时候lua会首先将问号用虚文件名替换,然后看是否有这有的文件存在。如果不存在就继续用同样的方法用第二个模式匹配

二、 串行化

a) 保存字符串

i. string.format

 

ii. 写入文件时

 

iii. 另外一种安全的方法来括住任意字符串的方法

 

b) 保存无环的tabel

c) 保存有环的tabel

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值