lua中 . 和 : 的区别
最近项目中使用到了 lua,因为之前没怎么接触过,特此记录下自己在学习过程中疑惑的地方。
(资料图片仅供参考)
在使用lua
进行编码的过程中,我们经常会使用到.
和:
,但是对于刚开始接触lua
的我来说,对这两者的使用还是感到时常感到疑惑,接下来我们一起看看几个例子,来感受两者的区别。如果发现文中错误的地方,请不吝赐教,谢谢!
1、基础介绍
接下来,我们看看下面的例子,来了解.
和:
的基础用法。
Car = {Name="BYD", Price=12}print("Car 的地址 --->", Car)print(Car.Name) -- 访问属性-- print(Car:Name) 报错print(string.rep("*", 20))function Car:find1()print(": 定义的函数并且使用 : 调用时 self 的地址--->", self)endfunction Car.find2()print(". 定义的函数并且使用 . 调用时 self 的地址--->", self)endCar:find1()Car.find2()print(string.rep("*", 20))function Car:find3()print(": 定义的函数并且使用 . 调用时 self 的地址--->", self)endfunction Car.find4()print(". 定义的函数并且使用 : 调用时 self 的地址--->", self)endCar.find3()Car:find4()
运行结果:
Car 的地址 ---> table: 038F9CA0BYD********************: 定义的函数并且使用 : 调用时 self 的地址---> table: 038F9CA0. 定义的函数并且使用 . 调用时 self 的地址---> nil********************: 定义的函数并且使用 . 调用时 self 的地址---> nil. 定义的函数并且使用 : 调用时 self 的地址---> nil
大家测试的时候,可以自己试一试。
从上面我们知道:
- 使用点号
.
来访问 table 的属性,不能使用:
来访问 table 的属性。 - 使用
.
和:
都可以用来访问 table 的函数。 - 使用
:
定义的函数并且使用:
调用时,定义的函数中默认有一个变量self
。而不是使用:
定义的函数并且使用:
调用时,定义的函数中的是没有self
变量的。
2、稍微深入的了解
通过上面的介绍,我们对 .
和:
有一个简单的了解,接下我们再稍微深入的了解下。这里先说结论,然后再看例子。
.
和:
的区别在于使用 :
- 使用
:
定义的函数时,函数隐含 self参数,使用:
调用函数会自动传入 table至 self参数。而使用.
定义的函数并没有这样。 - Lua 中使用
:
可以实现面向对象方式的调用。:
只是语法糖,它同时在方法的声明与实现中增加了一个名为self
的隐藏参数,这个参数就是对象本身。
2.1 :
定义的函数的示例
classA={}print("ClassA 地址 -->", classA)function classA:getob(name) print("classA:getob 中self 的地址 -->", self) ob={} setmetatable(ob,self) self.__index=self self.name=name return obendfunction classA:getself() return selfendc1=classA:getob("A")print("c1 地址 -->", c1)c2=classA:getob("B")print("c2 地址 -->", c2)print(string.rep("*",30))print(c1:getself())print(c2:getself())print(string.rep("*",30))----------------------继承------------------------classB=classA:getob() ----非常重要,用于获取继承的selffunction classB:getob(name,address) ob=classA:getob(name) setmetatable(ob,self) self.__index=self self.address=address return obendc3=classB:getob("gray.yang","shenzhen")print("c3 地址 -->", c3)print(c3:getself())
运行结果:
ClassA 地址 --> table: 0392D128classA:getob 中self 的地址 --> table: 0392D128c1 地址 --> table: 0392D010classA:getob 中self 的地址 --> table: 0392D128c2 地址 --> table: 0392CE80******************************table: 0392D010table: 0392CE80******************************classA:getob 中self 的地址 --> table: 0392D128classA:getob 中self 的地址 --> table: 0392D128c3 地址 --> table: 03933050table: 03933050
2.2 .
定义的函数的示例
classA={}print(classA)function classA.new(cls,...) --定义类方法时使用"."号,不适用隐式传参print(cls) this={} setmetatable(this,cls) cls.__index=cls --将元表的__index设为自身,访问表的属性不存在时会搜索元表 cls.init(this,...) --初始化表,注意访问类的方法都是".",此时不会隐式传入参数 return thisendfunction classA.init(self,name)print("classA.init -->", self) self.name=nameendfunction classA.getname(self)print("classA.getname -->", self) return self.nameend-- 注意这里的调用方式,是 : 。p=classA:new("gray.yang")print("p --->", p)print(p:getname())print(string.rep("*",50))
运行结果:
table: 0381B888table: 0381B888classA.init --> table: 0381B8D8p ---> table: 0381B8D8classA.getname --> table: 0381B8D8gray.yang**************************************************
熟悉其他面向语言的同学,看了上面的例子,应该对.
和:
有了了解,接下来自己平常多写写就明白了。
参考资料
Lua 面向对象
标签:
抢先读
- 兰州银行:6月15日公司高管雷鸣增持公司股份合计2万股
- 今日观点!2023北京市监狱管理局补录公务员体检、体能测评公告
- 广元朝天:跑出项目建设“加速度” 为实现“双过半”提供强劲动能
- 902头种猪乘坐货运包机顺利入境武汉|焦点精选
- 字节、恺英、三七、中手游暑假开卷,仙侠手游能走出「买量」怪圈吗? 世界快讯
- 放弃过招阿根廷,只想虐菜!4-0鱼腩,球迷质问足协:意义何在?
- 每日资讯:弘元光能SNEC后首个110MW订单顺利交付!
- 古尔邦节的意义何在_古尔邦节的意义
- 男子冲入球场抱梅西,警方通报处理结果
- 广州发展:子公司拟约5.19亿元投建上塘村100MW复合光伏发电项目 每日聚焦
- 四川文旅亮相第37届香港国际旅游展,熊猫家园尽显巴蜀魅力_天天新资讯
- 锂电池板块涨1.13% 派能科技涨14.46%居首|当前快看
- 喜报!临河区看守所辅警杨尚宇同志被评为“全国公安监管部门新冠疫情防控工作成绩突出辅警”
- 2023浙江国寿客户节暨“700健行”活动火热开启!-每日快看
- 大三阳能活多久最多活多少岁_大三阳能活多久-环球消息
- 世界即时:红酒加热沸腾半小时后还有酒精吗
- 快讯:野鸭子最喜欢吃什么食物_野鸭子吃什么食物简介介绍
- 环球观察:博努奇:让我与众不同的东西不会因一时失误而改变
- 助农兴渔,服务双区,国任保险实力助推农业高质量发展
- 今日快讯:你爆料 我调查|618啄木鸟投诉线索征集 网购套路、消费陷阱等你爆料
- 河南一资金互助社暴雷,有农民17万存款取不出-焦点播报
- 2023年青海第三代试管婴儿生儿子多少钱呢? 环球快看点
- 黟县中考平稳有序开展 天天热点
- 五部门:加强乡村基础设施建设支持-全球最资讯
- 宜昌市乡村振兴局
- 江南梅雨季降至,湖南迎暴雨大暴雨天气
- 呼图壁县集中力量打造纺织服装全产业链-头条
- 高校毕业季:“神秘的学术力量”学术权杖再登场
- 速看:提高护理工作绩效丛书:护士用药技巧
- 【第三届中国(青海)国际生态博览会】主宾省山东馆携好品亮相 全球热头条
- 武汉在建最深基坑开展突发险情应急演练 天天观察
- 广东餐饮百强落户福田!来福田商圈打卡潮汕市集
- 当前报道:怎么看玉镯子的真假图片_怎么看玉镯子的真假
- 通讯!五部门:鼓励运用信贷、债券、资产支持证券、基础设施领域不动产投资信托基金(REITs)等方式 支持专业化、规模化住房租赁企业发展
- 全球通讯!年度个人能力提升情况单位评价怎么写(年度个人能力提升情况单位评价)
- 花语小说系列:晚霞中的红蜻蜓
- 浙江省金华市2023-06-16 19:06发布大雾橙色预警
- 热成像、三防、还有高性能:AGM G2 GT评测
- 环球快看点丨浙数文化: 根据公司2023年第一季度报告,截至2023年3月31日,公司股东人数为52,840人
- 南京六合区:人才区内买新房每平方米补贴300元 支持团购优惠
- 直击哈洽会|齐齐哈尔市特装展区燃爆哈洽会 每日速读
- 石景山举办毕业季招聘会,300余名大学生参与求职_当前关注
- 焦点快报!华菱线缆:股东拟继续减持不超过6%股份
- 共济会中国成员_btob中国成员
- 深圳市政府与宁德时代签署战略合作框架协议
- “千万工程”20年 | 浙江:一枝花共富一方百姓资讯_世界短讯
- 上海昇思AI框架&大模型创新中心正式启动 云从科技等首批22家单位入驻
- 天天观热点:烧电焊眼睛痛怎么办缓解疼痛_烧电焊后眼睛痛怎么办
- 热度下降,价格上涨,文创雪糕遭遇“中年危机”
- 杨幂王者荣耀名字是什么在哪个区_杨幂王者荣耀名字
- 唯捷创芯:2023年6月16日收到政府补助款项共计人民币976万元_天天即时看
- 怎样扎马步才稳_新手怎样才能练好马步 如何练好扎马步 焦点速读
- 环球即时看!我的世界怎么开死亡不掉落_死亡不掉落指令怎么打开
- 天天消息!元气骑士风魔手里剑怎么合成(风魔手里剑合成方法)
- 生物医药板块涨0.2% 润达医疗涨10.02%居首 前沿资讯
- 武磊双响张琳芃破门国足4-0缅甸 扬科维奇迎上任首胜|播资讯
- 环球热头条丨肉羊品种最好的前十位
- 【全球新视野】聚生态之力 创产业未来 北京银行第二届生态伙伴大会成功举办
- 下午13点,35岁马龙宣布意外决定,樊振东遗憾,刘国梁破防了|天天观察
- 港股日报 | 恒生指数涨1.07%,南向资金净卖出96.26亿港元,汽车板块领涨
- 海外持续大涨!连纳斯达克网格都卖完了
- 张禹珍组合险胜孙颖莎师姐,向鹏组合获胜,王楚钦克星打进四强|新消息
- 天天热推荐:什么布透气性好有耐磨的_什么布透气性好有耐磨
- 新洲税务:“问办协同”热线贴心服务1.8万户市场主体
- 文旅部回应演唱会门票实名制:实名制目的为抵制黄牛_全球时快讯
- 当前热门:关于asmr主播少寒是谁 少寒Shine个人资料真名叫什么的相关信息
- 石家庄萃华金店周五(6月16日)黄金价格580元/克
- 【三夏进行时】海报|三晋夏收农忙“丰”景 每日速讯
- 世界热点!华纬科技(001380.SZ):目前公司共有4个生产基地
- 【环球播资讯】棕榈酸钠商品报价动态(2023-06-16)
- 火影忍者田雏告白几集_火影忍者雏田表白是哪一集相关介绍简介_全球热闻
- 每日信息:生物资源科学_关于生物资源科学介绍
- 12366纳税服务热线提升精准率:涵盖三千余个税费专有名词,智能语音匹配率88.75%
- 新疆人大代表联络站:民众解忧“万事屋”
- 【新视野】怎么才知道台式电脑有没有蓝牙_怎样知道电脑_台式机有没有蓝牙
- 北京房价见顶了吗?老破小领跌,豪宅学区房依然坚挺 当前速读
- 怎么让去皮的土豆不变黑
- 天天速看:普京:俄罗斯2023年4月GDP同比增长3.3%
- 五部门:持续推进储蓄国债下乡 丰富适合农村居民理财产品_环球实时
- 天天快播:伊朗媒体:美国打造“亚洲版北约”是场危险游戏 注定以失败收场
- 4399用户中心换身份证_4399用户中心
- 《Apex英雄》盛装杀戮收集活动预告 地平线传家宝上线
- 【世界说】外媒:美国债务上限 "协议 "是场两党恶斗演习 评级机构称这是美国治理的持续恶化-每日看点
- “粤”享非遗!跟随《非遗里的中国》走进万象广东 当前速读
- 广西鹿寨守护“水生态” 引珍稀生物成“常客”|环球实时
- 北京警方通报“球迷冲场拥抱梅西”:邸某某,18岁,已行拘
- 全球看热讯:赣锋锂业:终止与PMI代加工合作协议
- 智光电气:拟出资1亿元参与组建广州储能集团 当前热议
- 62股股东户数连降 筹码持续集中
- 浦大喜奔如何取消自动分期 浦大喜奔关闭自动分期方法介绍
- 热血传递爱心 宣城市机电学校开展无偿献血进校园活动
- 国林科技(300786.SZ)拟以简易程序定增募资不超2.48亿元
- 环球快消息!全国麦收进入尾声 各地“丰”景如画
- 热点聚焦:上海优特实业有限公司_北京优谱教育科技发展有限公司
- 侠诺svr9504路由器怎么设置_侠诺SVR9504-环球讯息
- 环球热议:财政部:1-5月证券交易印花税收入891亿元 同比下降36.9%
- 云南师范大学校园网认证客户端锐捷 云南师范大学校园网认证客户端
- 一线调研|金融顾问制度五年记
- 张江REIT扩募上市 公募REITs迎来新的里程碑
- 无痛流产一般多少钱_流产一般多少钱|焦点热文