Lua 类和结构体

Lua中默认是没有面向对象的,需要靠我们自己实现

成员变量 成员函数

Student = {
	age = 18,
	sex = true,
	Up = function ()
		print('长大了')
	end
}

Lua中类的表现更像是一个类中包含有很多的静态变量和函数

print(Student.age)
Student.Up()

在这里插入图片描述
在声明表后,可以在表外去声明表有的变量和方法
表内是没有name这个属性的,我们在表外给它添加了


Student.name= '少年'

--表外加函数有两种写法
--方法1
Student.play = function()
	print('打游戏')
end

--方法2
function Student.play2()
	print('打游戏2')
end

print(Student.name)
Student.play()
Student.play2()

在这里插入图片描述

注意,作用域
函数中的page和表中的page没有半毛钱关系,它是一个全局变量

Teacher = {
	page = 30
	teach=function()
		print('大家翻到'..page..'页')
	end	
}

在这里插入图片描述改写
想要在表内部函数中 调用表本身的属性或者方法
一定要指定是谁的 所以要使用 表名.属性 或者表名.方法

Teacher = {
	page = 30,
	Teach=function()
		print('大家把书翻到'..Teacher.page..'页')
	end	
}

--Teacher.teach()
print(Teacher.page)
Teacher.Teach()

在这里插入图片描述
还有一种方法
在函数内部调用自己的属性或者方法的方法
就是把自己作为一个参数传进来,在内部访问
Lua中点和冒号的区别
用点的时候,有什么参数就要传什么参数
用冒号调用方法的时候,会默认把调用者作为第一个参数传入

Teacher = {
	page = 30,
	Teach=function()
		print('大家把书翻到'..Teacher.page..'页')
	end	,

	Learn = function(t)
		print(t.page)
		print('好好学习')
	end
}

Teacher.Learn(Teacher)
Teacher:Learn()

注意
搞Lua要很细心,我这个逗号忘了,害我一直报错
在这里插入图片描述

lua中有一个关键字 self 表示 默认传入的第一个参数

Student ={
	age=20,
}

function Student:Speak()
	print('年龄'..self.age)
end

Student:Speak()

在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值