lua基础
Posted 天行健风行云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lua基础相关的知识,希望对你有一定的参考价值。
错误处理:
local function add(a,b) assert(type(a) == "number", "a 不是一个数字") assert(type(b) == "number", "b 不是一个数字") return a+b end add(10) #如果正确执行,不做任何操作,否则第二个参数当做错误信息。
error (message [, level]) 终止正在执行的函数,并返回message的内容作为错误信息(error函数永远都不会返回) 通常情况下,error会附加一些错误位置的信息到message头部。 Level参数指示获得错误的位置: Level=1[默认]:为调用error位置(文件+行号) Level=2:指出哪个调用error的函数的函数 Level=0:不添加错误位置信息
数据库访问:
LuaSQL。他是开源的,支持的数据库有:ODBC, ADO, Oracle, mysql, SQLite 和 PostgreSQL。 可以使用luarocks安装库 luarocks install luasql-sqlite3 luarocks install luasql-postgres luarocks install luasql-mysql luarocks install luasql-sqlite luarocks install luasql-odbc _______________________________________________ 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() --关闭数据库环境
面向对象:
lua中对象就是table Role = { hp = 100 } function Role.addHp(hp) Role.hp = Role.hp + hp end Role.addHp(50) print(Role.hp)
类:
Lua 没有类的概念,不过可以通过元表(metatable)来实现与原型 prototype 类似的功能,而 prototype 与类的工作机制一样,都是定义了特定对象行为。Lua 里的原型特性主要使用元表的 __index 事件来实现,这样当调用对象没定义的方法时,会向其元表的 __index 键(事件)查找。
Role = { hp = 100 } function Role:new(o) o = o or {} setmetatable(o, self) self.__index = self self.aaa=‘safasdf‘ return o end function Role:addHp(hp) self.hp = self.hp + hp end r = Role:new() for i ,j in pairs(r) do print(i,j..‘aaa‘) print(1) end r:addHp(50) print(r.hp) print(r.aaa)
继承同理,写个函数,定义当前的表的元表是父类(也是表),执行这个方法相当于实例化对象(返回一个表)。
以上是关于lua基础的主要内容,如果未能解决你的问题,请参考以下文章