Lua面向对象

Lua中没有类的概念,但通过table function与元表可以模拟出具有类这样功能的结构

(1)简单对象的创建

table赋予对象属性,function赋予对象行为

--创建一个animal对象
animal = {name = "Tom",age = 5}

--为animal添加方法
animal.bark = function(voice)
	print(animal.name.."在"..voice.."叫")
end

--也可以这样写

--创建一个animal对象
animal = {name = "Tom",age = 5,animal.bark = function(voice)
	print(animal.name.."在"..voice.."叫")
end
}

这样使用会报错

--创建一个animal对象
animal = {name = "Tom",age = 5}

--为animal添加方法
animal.bark = function(voice)
	print(animal.name.."在"..voice.."叫")
end

animal2 = animal

animal = nil

animal2.bark("wangwang")

结果

原因是这句中的

animal.bark = function(voice)
    print(animal.name.."在"..voice.."叫")
end

animal.name空了

应当这样修改

--创建一个animal对象
animal = {name = "Tom",age = 5}

--为animal添加方法
animal.bark = function(self,voice)
	print(self.name.."在"..voice.."叫")
end

animal2 = animal

animal = nil

animal2.bark(animal2,"wangwang")

运行结果

省略self的写法,用function声明,加 :        

--创建一个animal对象
animal = {name = "Tom",age = 5}

--为animal添加方法
function animal:bark(voice)
	print(self.name.."在"..voice.."叫")
end

animal2 = animal

animal = nil

animal2:bark("wangwang")

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值