Lua 学习手札

lua的类型:
nil
string
number
boolean
function
userdata
thread
table
lua 有三种变量
全局变量
local标示的局部变量
表中的域
lua用"..." (三个点来标示函数有可选参数) #用井号来表示字符串长度(string.len也是可以的)
lua的不等于 是 (~=)
lua 用两个点表示数据的链接。
lua 除了^和..外所有的二元运算符都是左连接
lua可以用 单引号,双引号,[[]] <<
lua 的字符串操作函数:string.gsub() 用于替换字符串
     string.reverse() 翻转字符串
     string.find() 查找字符串。
     string.rep() 重复字符串
lua的table操作方法
     table.concat()分隔表
     table.insert() 在表的制定位置 插入值
     table.remove()移除一个元素
lua的元表(Metatable)
     允许我们改变table的行为,每个行为关联了对应的元方法。
setmetatable(table,metatable): 对指定table设置元表(metatable),如果元表(metatable)中存在
__metatable键值,setmetatable会失败 。
getmetatable(table): 返回对象的元表(metatable)。
__index() __newindex();
lua 协同线程coroutine
     Lua 协同程序(coroutine)与线程比较类似:拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又
     与其它协同程序共享全局变量和其它大部分东西。
线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而协同程序却需要彼此协作
的运行。
在任一指定时刻只有一个协同程序在运行,并且这个正在运行的协同程序只有在明确的被要求挂起的时候才会被
挂起。
协同程序有点类似同步的多线程,在等待同一个线程锁的几个线程有点类似协同。
coroutine.create() 创建一个协程
coroutine.resume()重启
coroutine.yield()挂起
coroutine.status()状态
lua的文件操作函数 io.open();--打开文件(两个减号表示注释)
io.input() 设置默认文件
io.read() 读取
io.write() 写入
io.output() 设置输出文件
io.close()关闭打开文件
io.flush() 像文件 写入缓冲区的所有数据
lua的错误处理:assert()
      error():error (message [, level])
功能:终止正在执行的函数,并返回message的内容作为错误信息(error函数永远都不会返回)
通常情况下,error会附加一些错误位置的信息到message头部。
Level参数指示获得错误的位置:
Level=1[默认]:为调用error位置(文件+行号)
Level=2:指出哪个调用error的函数的函数
Level=0:不添加错误位置信息

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注