Lua基础与模拟面向对象

本文深入讲解Lua语言的基础语法,包括变量定义、数据类型、流程控制、表操作、函数定义及调用,同时介绍了Lua的面向对象编程模拟实现,是初学者入门Lua的理想资料。

--[[
print("Hello World");

print('Hello world');
--Lua是弱类型语言
--C#是强类型语言---int x = 10; 

--全局变量
x = 10;--number
x = "hxsd";--字符串
print(x);
--局部变量
local y = 10.123;
print(type(y))
y = "CSDN";
print(type(y))
print(y);

local z;
print(z)

local t = {};

print(t);

local str = "12345";
print(#str)

local str1 = "123";
local str2 = "456";
print (str1 + str2)
print(str1..str2)
--print(_G["x"])

--双目运算符 : + * / && & || |
--单目运算符: ! ++ --  a ++   b --   !true
--三目运算符:  1 ? 2 : 3
--true &  false   
--Lua中没有++  --  += *= 
local x = 1;
 x = x + 1;
 print(x)

local y = 3;

print( y ~= x  or x == 0);



local x = -3;

if x > 0 then
	print("x 是正值");
elseif x == 0 then
	print("x等于0");
else 
	print("x 是负数");
end



local x = 10
while x > 0 do
	print(x);
	x = x - 1;
end

local y = 10;
repeat
	print(y);
	y = y - 1;
until y == 0


for i=1,10 do
	print(i)
end


--table

--表相当于C#中的什么功能:数组、列表、字典、类、结构体
local ta = {"12345",123,[-3] = 100,["blue"] = "蓝色",[3] = "three",["tata"] = {["123"]= 123,["456"] = 456}}
print(#ta)
print(ta[1])
print(ta[2])--通过下标号取值
print(ta["blue"])--通过Key取值

ta["Test"] = "Test"--类似字典的用法
print(ta.Test)--类似对象的访问

print(ta.tata["123"])

--遍历表
for k,v in pairs(ta) do
	print(k,v)
end



function fun1(  )
	print("hello")
end

fun1()

local fun2 = function (  )
	print("fun2")
end
fun2()

local fun3 = function ( a, b )
	print(a,b)
end
fun3(3,4,5)

local fun4 = function ( a )
	print("fun4:"..a)
	return a + 3
end
print(fun4(3))

--可以有两个返回值
local fun5 = function ( )
	return 1,2
end
local x = fun5()
print(x)

local fun6 = function ( ... )
	local t = {...}
	local sum = 0
	for k,v in pairs(t) do
		sum = sum + v
	end
	print(sum)
end
fun6(1,2,3,4,5,6)

class Person{
	public string name;
	public int age;
	
	public void Show(){
		cw("name:{0},age:{1},name,age);
	}
}

Person zhangsan = new Person();
zhangsan.Show();



local t = {["name"]="zhangsan",["age"] = 18}

--将一个方法作为表的一个元素
t.func1 = function (  )
	print("表的方法func1")
end

t.func1()

t.func2 = function ( ta )
	print("name:"..ta["name"])
end
t.func2(t)

function t : func3()
	print("name:"..self.name)
end

t:func3()

]]

--模拟面向对象

--[[
local t1 = {["name"] = "zhangsan"}
local t2 = {["age"] = 18}

--相当于t2作为t1的一个扩展
setmetatable(t1,t2)
t2.__index = t2

print(t1.age)

]]


local Person = {name,age}
function Person : New(name,age)
	local t = {}
	setmetatable(t , self)
	self.__index = self

	self.name = name
	self.age = age

	return t
end

function Person : Show()
	print(self.name,self.age)
end


local zhangsan = Person:New("张三", 18)
print(zhangsan.age)
zhangsan:Show()

local lisi = Person: New("李四",20)
lisi:Show()

---模拟继承
local Student = Person:New()
function  Student : New( name,age,major )
	local t = Person:New(name,age)
	setmetatable(t,self)
	self.__index = self;

	self.major = major

	return t
end

function Person : Show(  )
	print(self.name,self.age,self.major)
end

local  wangwu = Student : New("王五",18,"Unity")
print(wangwu.major)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LilyCoder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值