lua语言的学习
1.协同程序
coroutine.create() 创建coroutine,返回coroutine, 参数是一个函数,当和resume配合使用的时候就唤醒函数调用
coroutine.resume() 重启coroutine,和create配合使用
coroutine.yield() 挂起coroutine,将coroutine设置为挂起状态,这个和resume配合使用能有很多有用的效果
coroutine.status() 查看coroutine的状态
注:coroutine的状态有三种:dead,suspend,running,具体什么时候有这样的状态请参考下面的程序
coroutine.wrap() 创建coroutine,返回一个函数,一旦你调用这个函数,就进入coroutine,和create功能重复
coroutine.running() 返回正在跑的coroutine,一个coroutine就是一个线程,当使用running的时候,就是返回一个corouting的线程
2.错误提示
我们可以使用两个函数:assert 和 error 来处理错误。实例如下:
error (message [, level])
例如:
assert(type(a) == “number”, “a 不是一个数字”)
3.错误处理
pcall接收一个函数和要传递给后者的参数,并执行,执行结果:有错误、无错误;返回值true或者或false, errorinfo。
xpcall接收第二个参数——一个错误处理函数,当错误发生时,Lua会在调用桟展开(unwind)前调用错误处理函数,于是就可以在这个函数中使用debug库来获取关于错误的额外信息了。
4.连接数据库
例子“”
require “luasql.mysql”
–创建环境对象
env = luasql.mysql()
–连接数据库
conn = env:connect(“数据库名”,”用户名”,”密码”,”IP地址”,端口)
–设置数据库的编码格式
conn:execute”SET NAMES UTF8”
–执行数据库操作
cur = conn:execute(“select * from role”)
row = cur:fetch({},”a”)
–文件对象的创建
file = io.open(“role.txt”,”w+”);
while row do
var = string.format(“%d %s\n”, row.id, row.name)
print(var)
file:write(var)
row = cur:fetch(row,”a”)
end
file:close() –关闭文件对象
conn:close() –关闭数据库连接
env:close() –关闭数据库环境