使用Cocos Code Ide开发之:lua继承的理解_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 使用Cocos Code Ide开发之:lua继承的理解

使用Cocos Code Ide开发之:lua继承的理解

 2014/9/12 18:49:26  侏小儒  程序员俱乐部  我要评论(0)
  • 摘要:边写边错,边错边改,边改变搜,再改,改出了些心得。可能会有错误,多包涵,接受批评。1---Base.lua23Base={}45Base.__index=Base6Base.value=nil78functionBase:new(_value)9local_t={}10setmetatable(_t,Base)11_t.value=_value12return_t13end1---Children.lua2require("Base")3Children={}45setmetatable
  • 标签:使用 ide 继承 开发 理解 Lua继承

边写边错,边错边改,边改变搜,再改,改出了些心得。可能会有错误,多包涵,接受批评。

 1 ---Base.lua
 2 
 3 Base = {}                              
 4 
 5 Base.__index = Base
 6 Base.value = nil
 7 
 8 function Base:new(_value)
 9     local _t = {}
10     setmetatable(_t, Base)
11     _t.value = _value
12     return _t
13 end
 1 ---Children.lua
 2 require("Base")
 3 Children = {}
 4 
 5 setmetatable(Children, Base)
 6 Children.__index = Children
 7 Children.type = nil
 8 
 9 function Childeren:new(_value,_type)
10     local _c = Base:new(_value)
11     setmetatable(_c, Children)
12     _c.type = _type
13     return _c
14 end

Base.lua 是基类,Children.lua 是继承Base.lua的子类,可能大家习惯了C++,我转下

 1 --- .h
 2 
 3 class Base
 4 {
 5      public:
 6           void setValue(_value)
 7           int value;                      
 8 }
 9 
10 --- .cpp
11 Base::setValue(_value)
12 {
13      value = _value;
14 }
15 
16 main()
17 {
18     Base* b = new Base();
19     cout << b.value << endl;
20 }

这里的 b 和 上面的 _t,我认为是一样的,都是一个对象,_t 是 table 类型的,

_t.value 就像 b.value.

setmetatable(Children,Base): 将 Childeren 的元表设置为 Base ,

setmetatable(_c, Children) : 将 _c 的元表设置为 Children,

举个例子吧:

_c : 儿子   Children :爸爸  Base : 爷爷

儿子 想买一个玩具,若 : 1. 自己有钱,直接买,获得到玩具

            2. 自己没钱,去搜索 爸爸 的裤兜,若有钱,获得到钱,买玩具

            3. 自己没钱,去搜索 爸爸 的裤兜,若没有钱,去搜索 爷爷 的裤兜,若有钱,获得到钱,买玩具, 若没钱, 两手空空,只能是 nil

类方法也是如此。

 

发表评论
用户名: 匿名