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)


#如果正确执行,不做任何操作,否则第二个参数当做错误信息。
assert
技术分享图片
error (message [, level])

终止正在执行的函数,并返回message的内容作为错误信息(error函数永远都不会返回)
通常情况下,error会附加一些错误位置的信息到message头部。
Level参数指示获得错误的位置:
Level=1[默认]:为调用error位置(文件+行号)
Level=2:指出哪个调用error的函数的函数
Level=0:不添加错误位置信息
error

数据库访问:

技术分享图片
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()   --关闭数据库环境
View Code

面向对象:

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)
可以理解为new是类

继承同理,写个函数,定义当前的表的元表是父类(也是表),执行这个方法相当于实例化对象(返回一个表)。

以上是关于lua基础的主要内容,如果未能解决你的问题,请参考以下文章

白话Lua系列零基础教程 — 初识Lua

函数 — 白话Lua系列零基础教程 第六期

lua代码设置unity对象的基础属性

分支判断 — 白话Lua系列零基础教程 第五期

逻辑运算 — 白话Lua系列零基础教程 第四期

[编程]LUA基础