1.环境配置(使用eclispe的独立LDT)
下载地址:http://www.eclipse.org/koneki/ldt/
2.Lua的变量,逻辑控制,函数方法,表,面向对象的2种实现方法
2.1变量无类型,直接赋值
注意:变量或者方法默认是全局的,局部变量或方法要加上 local
--Lua所有数字都是浮点型,var是全局变量,var2是局部变量
--只有nil和false表示逻辑假,连0也是true
var = 1
local var2 = "hello lua"
print(var,var2)
2.2逻辑控制(if,for和while)
注意:do 和 end 就相当于 大括号{} 用与划分程序段
if num > 40 then
print('over 40')
-- ~= 表示不等于。
-- 像Python一样,== 表示等于;适用于字符串。
elseif s ~= 'walternate' then
io.write('not over 40\n') -- 默认输出到stdout。
else
-- ..操作符用于连接字符串:
print('Winter is coming, ' .. line)
end
--var的变化范围是1到100,包括端点1和100
for var=1, 100 do
print(var)
end
while num < 50 do
num = num + 1 -- 没有 ++ or += 运算符。
end
2.3函数方法
function sayHello()
print("hello Lua")
end
sayHello()
2.4表
--创建people表,并赋值初始化
people = {}
people["mok"] = 20
people["lackest"] = 21
print(people.mok) --20
--遍历表,输出所有的键值对
for key, var in pairs(people) do
print(key,var)
end
--两个表之间不能直接进行运算
--必须进行运算符重载,而Lua的方法是用元表和元方法
--本质就是一个元表里面写一个元方法,再把这个表与另一个表绑定在一起
-- 创建一个元表,写一个元方法
local mt = {};
mt.__add = function(t1, t2)
print("将两个表相加吧");
end
local t1 = {};
local t2 = {};
-- 给两个table设置新的元表
setmetatable(t1, mt);
setmetatable(t2, mt);
-- 进行加法操作
local result = t1 + t2;
2.5面向对象的2种实现方法
第一种:通过复制表的方式实现
思路:
(1)创建父表people,子表men
(2)写全局方法clone,返回self,用于初始化表,相当于C++的new
(3)写全局方法copy,把子表的所有数据,增加到父表的备份中,这样就可以从备份中调用父表的方法,实现继承
--创建一个全局复制表的方法
function clone(tab)
local temp = {}
for key, var in pairs(tab) do
temp[key] = var
end
return temp
end
--创建copy方法,dist是父表
function copy(dist,tab)
for key, var in pairs(tab) do
dist[key] = var
end
end
--创建父表,里面有new,和sayHi方法
people = {}
--people的初始化方法,类似C++的new
people.new = function(name)
local self = clone(people)
self.name = name
return self
end
people.sayHi = function(self)
print(self.name.."say Hi to you")
end
--创建子表,里面有new,和sayHello方法
men = {}
men.new = function (name)
local self = people.new(name) --拷贝一份父表
copy(self,men) --将子表的一切,添加带父表的备份中,从备份中调用父表方法,实现继承
return self
end
men.sayHello = function()
print("men say Hell to you")
end
--调用父表方法
local m = men.new("Lackest")
m:sayHi()
第二种:使用闭包函数实现,类似C++的class,成员默认是public,变成private要加上local
思路:在子函数里面,备份父函数,调用备份的方法,实现继承
--创建父函数当作父类
function People(name)
local self = {}
local function init()
self.name = name
end
self.sayHi = function ()
print("Hello "..self.name)
end
init()
return self
end
--创建子函数当作子类
function Man(name)
local self = People(name) --获取父函数的备份,调用备份的方法,实现继承
self.sayHello = function ()
print("Hi "..self.name)
end
return self
end
--调用父函数的方法
local m = Man("Lisi")
m:sayHi()