Lua语言中的"."和":"有什么不同?
functionMagicPanel:init()self._uiLayer=cc.Layer:create()--这里的CC怎么理解self:addChild(self...
function MagicPanel:init()
self._uiLayer = cc.Layer:create() --这里的CC怎么理解
self:addChild(self._uiLayer,200)
self._widget2 = ccs.GUIReader:getInstance():widgetFromJsonFile("stuntBackUI.ExportJson") --ccs是什么
local backPanel = self._widget2:getChildByName("backPanel")
local outBtn = backPanel:getChildByName("button")
self._uiLayer:addChild(self._widget2,200)
初学Lua,问的问题很业余,行家别见怪。我就是对这些基础语法不是很清楚。一会儿是self后面跟”.“一会儿又是":",很糊涂,还望大神不吝赐教! 展开
self._uiLayer = cc.Layer:create() --这里的CC怎么理解
self:addChild(self._uiLayer,200)
self._widget2 = ccs.GUIReader:getInstance():widgetFromJsonFile("stuntBackUI.ExportJson") --ccs是什么
local backPanel = self._widget2:getChildByName("backPanel")
local outBtn = backPanel:getChildByName("button")
self._uiLayer:addChild(self._widget2,200)
初学Lua,问的问题很业余,行家别见怪。我就是对这些基础语法不是很清楚。一会儿是self后面跟”.“一会儿又是":",很糊涂,还望大神不吝赐教! 展开
1个回答
展开全部
:是个语法糖,调用的函数会自动传递参数self
即
local a = {x = 0}
function a.foo(self, a)
self.x = a
end
function a:foo2(a)
self.x = a
end
--调用时:
a.foo(a, 2)
a.foo2(2)
上述两个操作是等价的,用:时就省去了定义和调用时需要额外添加self用来指代自身的麻烦
用cocos2d么,cc是cocos2d库的对象名称
即
local a = {x = 0}
function a.foo(self, a)
self.x = a
end
function a:foo2(a)
self.x = a
end
--调用时:
a.foo(a, 2)
a.foo2(2)
上述两个操作是等价的,用:时就省去了定义和调用时需要额外添加self用来指代自身的麻烦
用cocos2d么,cc是cocos2d库的对象名称
追问
谢谢回答。我也看到有人说"."是用来访问对象的,":"是用来访问函数的,但是这种说发感觉不准确。
我对于lua的这些基本语法的写法不是很熟悉,不知道去哪里学习这些内容,您能否告知我从哪里可以学习像您上面讲到的这些内容,有没有相关资料或是视频。我会追加感谢的,谢谢你!
追答
官方读物,lua程序设计(pil),讲得还是很透彻的;这类解释语言最大的好处就是试验调试方便,可以一边看一边自己尝试
英语过关的可以去看一下lua user wiki,上面有不少对于语言的细节问题的阐述,也很值得一看
当然最好的办法还是自己多写多看
"."是用来访问对象的,":"是用来访问函数的
这个说法不算离谱,在用lua进行面向对象时比较常见的惯例也是的确如此,但单纯从语言层面来说依然是语法糖的实质不会变,因为lua原生的复合数据结构就只有表
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询