最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Lua中實(shí)現(xiàn)StringBuffer功能

 更新時(shí)間:2014年11月06日 12:02:59   投稿:junjie  
這篇文章主要介紹了Lua中實(shí)現(xiàn)StringBuffer功能,本文給出了實(shí)現(xiàn)代碼和調(diào)用代碼,需要的朋友可以參考下

在Lua中,字符串是一個(gè)常量,如果用字符串連接符“..”把2個(gè)字符串連接起來(lái),例如first_str = first_str .. second_str,那么原來(lái)的first_str和second_str就會(huì)作為垃圾等待回收,first_str引用的是一個(gè)新的字符串,如果在程序里面有大量的字符串連接操作的話,性能會(huì)十分低下。Lua是一個(gè)很簡(jiǎn)潔的語(yǔ)言,他沒有StringBuffer的實(shí)現(xiàn),但是其實(shí)我們可以動(dòng)手寫一個(gè)簡(jiǎn)單的StringBuffer實(shí)現(xiàn),來(lái)避免性能的問(wèn)題。

首先定義一個(gè)叫StringBuffer的table,使得這個(gè)StringBuffer被調(diào)用的時(shí)候看起來(lái)像是面向?qū)ο蟮臉幼?:)
然后分別定義兩個(gè)方法append和tostr,實(shí)現(xiàn)的原理就是:append用table來(lái)保存所有字符串,tostr把保存了字符串的table用concat轉(zhuǎn)成真正的字符串。

復(fù)制代碼 代碼如下:

StringBuffer = {}
StringBuffer.append =  function(t, str)
if t and str then
    table.insert(t, str)
end
end
StringBuffer.tostr =  function(t)
if t then
    return table.concat(t)
end
end
StringBuffer.new = function() return {} end

調(diào)用的時(shí)候大概如下,摘錄了一段代碼。。。

復(fù)制代碼 代碼如下:

all_assets = StringBuffer.new()
for asset in ctx:allassets() do
    StringBuffer.append(all_assets, asset:id())
    StringBuffer.append(all_assets, ', ')
end
result = StringBuffer.tostr(all_assets)
print (result)

在Lua中實(shí)現(xiàn)這樣的一個(gè)StringBuffer,既可以避免潛在的性能問(wèn)題,又可以使得代碼看起來(lái)更加易懂~好了,重構(gòu)以前的代碼去了。。。

相關(guān)文章

  • Lua中訪問(wèn)table里函數(shù)的方法示例

    Lua中訪問(wèn)table里函數(shù)的方法示例

    這篇文章主要介紹了Lua中訪問(wèn)table里函數(shù)的方法示例,本文例子超級(jí)簡(jiǎn)單,算是入門實(shí)例吧,其實(shí)只需要表名.方法名即可訪問(wèn),重要的還是其它代碼寫法,本文給出了一個(gè)完整的代碼示例,需要的朋友可以參考下
    2015-04-04
  • Lua中類的實(shí)現(xiàn)原理探討(Lua中實(shí)現(xiàn)類的方法)

    Lua中類的實(shí)現(xiàn)原理探討(Lua中實(shí)現(xiàn)類的方法)

    這篇文章主要介紹了Lua中類的實(shí)現(xiàn)原理探討(Lua中實(shí)現(xiàn)類的方法),本文同時(shí)講解了metatable、元方法等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • Lua游戲開發(fā)教程之時(shí)區(qū)問(wèn)題詳解

    Lua游戲開發(fā)教程之時(shí)區(qū)問(wèn)題詳解

    時(shí)間顯示問(wèn)題說(shuō)白了就是時(shí)差問(wèn)題,這篇文章主要給大家介紹了關(guān)于Lua游戲開發(fā)教程之時(shí)區(qū)問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • Lua中break語(yǔ)句的使用方法詳解

    Lua中break語(yǔ)句的使用方法詳解

    這篇文章主要介紹了Lua中break語(yǔ)句的使用方法詳解,是Lua入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • 最新評(píng)論

    富源县| 平定县| 仙居县| 当雄县| 临西县| 乌兰察布市| 旬阳县| 滦平县| 买车| 高碑店市| 磐石市| 安平县| 宝鸡市| 水城县| 克山县| 民丰县| 兴安县| 南京市| 繁昌县| 新竹县| 麻江县| 偏关县| 将乐县| 清镇市| 璧山县| 保德县| 安阳县| 合山市| 宝坻区| 石渠县| 麻城市| 清河县| 纳雍县| 布拖县| 华宁县| 武汉市| 化德县| 天柱县| 太和县| 湟源县| 苏尼特左旗|