在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
冒号的作用: 如 a:b(c) 可以理解为 a.b(a, c) 以下是用点号的定义和调用函数的方式: 1 Song = 2 { 3 name = "", 4 timeLength = 0, 5 } 6 7 function Song.SetName(name) 8 Song.name = name; 9 end 以上的函数定义可以使可以,但是有一个很大的问题,思考10s为什么? 假如有以下逻辑: 1 ChineseSong = Song; 2 Song = nil; 3 ChineseSong.SetName("化身孤岛的鲸"); 赋值操作使两者指向了相同的内存地址。这样显然是编译通不过的,因为方法中用到了 Song,但是Song此时为 nil。 以下是修改后的代码: 1 Song = 2 { 3 name = "", 4 age = 0, 5 } 6 7 function Song.SetName(self, name) 8 self.name = name; 9 end 10 local ChineseSong = Song; 11 Song = nil; 12 ChineseSong.SetName(ChineseSong, "化身孤岛的鲸"); 13 print(ChineseSong.name) 运行结果: 使用冒号可以简化函数的定义与调用,代码如下: 1 Song = 2 { 3 name = "", 4 age = 0, 5 } 6 7 function Song:SetName(name) 8 self.name = name; 9 end 10 11 local ChineseSong = Song; 12 Song = nil; 13 ChineseSong:SetName("化身孤岛的鲸"); 14 print(ChineseSong.name); 运行结果: |
请发表评论