ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲超碰在线,国产在线一区二区综合免费视频,日本一区二区三区视频视频http://www.aygfsteel.com/rockblue1988/category/54656.html我的代码ä¸ÞZ»€ä¹ˆè¿™ä¹ˆä¸‘?ä¸€å®šæ˜¯å› äØ“æˆ‘é•¿çš„ä¸å¥½çœ‹zh-cnTue, 03 Feb 2015 12:17:53 GMTTue, 03 Feb 2015 12:17:53 GMT60LUA 面向对象¾~–程中的一个坑http://www.aygfsteel.com/rockblue1988/archive/2014/12/29/421910.htmlJimiJimiMon, 29 Dec 2014 03:42:00 GMThttp://www.aygfsteel.com/rockblue1988/archive/2014/12/29/421910.htmlhttp://www.aygfsteel.com/rockblue1988/comments/421910.htmlhttp://www.aygfsteel.com/rockblue1988/archive/2014/12/29/421910.html#Feedback4http://www.aygfsteel.com/rockblue1988/comments/commentRss/421910.htmlhttp://www.aygfsteel.com/rockblue1988/services/trackbacks/421910.html 下面是一个LUA面向对象写法非常常见的写法ã€?br />
Bird = {
    color = {};canFly = true
}

function Bird:new(o)
    o = o or {}
    setmetatable(o, self)
    self.__index = self
    self.color = {}
    return o
end
注意åQŒè¿™é‡ŒBird¾cÀLœ‰ä¸¤ä¸ªå±žæ€§ï¼Œ1个表åQ?个是基本¾cÕdž‹åQŒç„¶åŽä¸Š‹¹‹è¯•代码åQˆUtils¾cÕdªæ˜¯ç®€å•çš„ž®è£…¾c»ï¼Œå¯ä»¥è‡ªå·±å®žçŽ°ä¸€ä¸ªï¼‰
        local A = Bird:new()
        LoggerUtils:debug("------------------------------原始å€?----------------------------------");
        LoggerUtils:debug("Bird canFly:" .. StringUtils.boolean2string(A.canFly));
        LoggerUtils:debug("Bird color:");
        CommonUtils.printTable(Bird.color)
        LoggerUtils:debug("a canFly:" .. StringUtils.boolean2string(A.canFly));
        LoggerUtils:debug("a color:");
        CommonUtils.printTable(A.color)
        --改变A的属æ€?br />         A.canFly = false
        A.color[1] = "red"
        A.color[2] = "blue"
        A.color[3] = "green"
        LoggerUtils:debug("------------------------------A改变å?---------------------------------");
        LoggerUtils:debug("Bird canFly:" .. StringUtils.boolean2string(Bird.canFly));
        LoggerUtils:debug("Bird color:");
        CommonUtils.printTable(Bird.color)
        LoggerUtils:debug("A canFly after change:" .. StringUtils.boolean2string(A.canFly));
        LoggerUtils:debug("A color after chagne:");
        CommonUtils.printTable(A.color)
        LoggerUtils:debug("-------------------------------Bçš„å€?---------------------------------");
        local B = Bird:new()
        LoggerUtils:debug("B canFly:" .. StringUtils.boolean2string(B.canFly));
        LoggerUtils:debug("B color:");
        CommonUtils.printTable(B.color)

代码执行¾l“æžœåQ?br />
2014-12-29 11:20:40,690 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: ------------------------------原始å€?----------------------------------
2014-12-29 11:20:40,690 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird canFly:true
2014-12-29 11:20:40,691 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird color:
2014-12-29 11:20:40,691 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: a canFly:true
2014-12-29 11:20:40,691 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: a color:
2014-12-29 11:20:40,691 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: ------------------------------A改变å?---------------------------------
2014-12-29 11:20:40,691 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird canFly:true
2014-12-29 11:20:40,691 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird color:
2014-12-29 11:20:40,692 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 1:red
2014-12-29 11:20:40,692 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 2:blue
2014-12-29 11:20:40,692 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 3:green
2014-12-29 11:20:40,692 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: A canFly after change:false
2014-12-29 11:20:40,692 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: A color after chagne:
2014-12-29 11:20:40,693 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 1:red
2014-12-29 11:20:40,693 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 2:blue
2014-12-29 11:20:40,695 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 3:green
2014-12-29 11:20:40,695 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: -------------------------------Bçš„å€?---------------------------------
2014-12-29 11:20:40,695 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: B canFly:true
2014-12-29 11:20:40,695 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: B color:
2014-12-29 11:20:40,695 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 1:red
2014-12-29 11:20:40,695 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 2:blue
2014-12-29 11:20:40,696 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 3:green
发现¼œžé©¬é—®é¢˜äº†å—åQ?br />当Açš„ç±»åž‹äØ“è¡¨çš„å±žæ€§color改变æ—Óž¼ŒåŽŸå§‹¾cȝš„color属性也改变了,同时˜q™ä¸ªæ”¹å˜ä¹Ÿåª„响到新徏的BåQŒè€Œç±»åž‹äؓ基本¾cÕdž‹çš„属性canFlyž®±æ²¡æœ‰è¿™ä¸ªé—®é¢˜ã€?br />我的解决æ–ÒŽ³•是新增一个setæ–ÒŽ³•åQ?br />
function Bird:setColor(color)
    self.color = color
end

然后修改改变属性的方式åQ?br />
local color ={}
        color[1] = "red"
        color[2] = "blue"
        color[3] = "green"
        A:setColor(color)
输出¾l“æžœåQ?br />
2014-12-29 11:31:58,648 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: ------------------------------原始å€?----------------------------------
2014-12-29 11:31:58,648 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird canFly:true
2014-12-29 11:31:58,649 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird color:
2014-12-29 11:31:58,649 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: a canFly:true
2014-12-29 11:31:58,649 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: a color:
2014-12-29 11:31:58,649 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: ------------------------------A改变å?---------------------------------
2014-12-29 11:31:58,649 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird canFly:true
2014-12-29 11:31:58,650 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: Bird color:
2014-12-29 11:31:58,650 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: A canFly after change:false
2014-12-29 11:31:58,650 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: A color after chagne:
2014-12-29 11:31:58,650 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 1:red
2014-12-29 11:31:58,650 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 2:blue
2014-12-29 11:31:58,650 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: 3:green
2014-12-29 11:31:58,651 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: -------------------------------Bçš„å€?---------------------------------
2014-12-29 11:31:58,651 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: B canFly:true
2014-12-29 11:31:58,653 [main] DEBUG server.app.game.util.LoggerUtils:34 - LUA: B color:
另外同事一个解å†Ïx–¹æ³•æ›´½Ž€å•,直接修改new()æ–ÒŽ³•åQŒå…¶å®ƒçš„地方都不用改åQ?br />
function Bird:new(o)
    o = o or {}
    setmetatable(o, self)
    self.__index = self
    o.color = {} 
    return o
end
˜q™ä¸ªé—®é¢˜åŸºæœ¬ä¸Šç½‘上的½CÞZ¾‹è²Œä¼¼éƒ½æ²¡æåˆ°åQŒæˆ‘è¯Èš„书里也没有,实际调试˜q‡ç¨‹ä¸­æ‰å‘现的,会造成新创建的¾c»é‡Œä¼šæœ‰ä¸è¯¥æœ‰çš„属性,比较蛋疼ã€?br />具体原因不了解,有木有筒子指教一下?™åÞZ¾¿é—®é—®˜q™ä¸¤¿Uæ–¹æ³•哪¿Uæ›´å¥½ï¼Ÿ

Jimi 2014-12-29 11:42 发表评论
]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ÎÌÔ´ÏØ| ÏçÄþÏØ| ´óÁ¬ÊÐ| ¶ÑÁúµÂÇìÏØ| ÐÂÔ´ÏØ| ºôÂ×±´¶ûÊÐ| ÑÓ´¨ÏØ| ÁÙå¢ÏØ| ³£µÂÊÐ| ÁèÔ´ÊÐ| ¶«ÀöÇø| Á°Ë®ÏØ| ÃÉÒõÏØ| ¸ßÌ¨ÏØ| Ǩ°²ÊÐ| ¹ÛÌÁÇø| ɽ¶«| ÌìÆø| ÎÚÀ­ÌغóÆì| Òø´¨ÊÐ| ÎÚÀ­ÌØÖÐÆì| ÓÀË³ÏØ| ÐË»¯ÊÐ| ãôË®ÏØ| ÁéÊÙÏØ| Î÷°²ÊÐ| ̨ɽÊÐ| Ðí²ýÏØ| ËÄ´¨Ê¡| ¹ó¸ÛÊÐ| ÌúÁ¦ÊÐ| Ê¯ÈªÏØ| ½òÊÐÊÐ| ¶«Ïç×å×ÔÖÎÏØ| ÓÀÈÊÏØ| ¶àÂ×ÏØ| ÕÁÊ÷ÊÐ| ÔÆÄÏÊ¡| ±±¾©ÊÐ| ÕżҿÚÊÐ| ¶«°¢ÏØ|