最新国产好看的视频,伊人天堂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)避免性能的問題。

首先定義一個(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,既可以避免潛在的性能問題,又可以使得代碼看起來(lái)更加易懂~好了,重構(gòu)以前的代碼去了。。。

相關(guān)文章

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

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

    這篇文章主要介紹了Lua中訪問table里函數(shù)的方法示例,本文例子超級(jí)簡(jiǎn)單,算是入門實(shí)例吧,其實(shí)只需要表名.方法名即可訪問,重要的還是其它代碼寫法,本文給出了一個(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ū)問題詳解

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

    時(shí)間顯示問題說(shuō)白了就是時(shí)差問題,這篇文章主要給大家介紹了關(guān)于Lua游戲開發(fā)教程之時(shí)區(qū)問題的相關(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)論

    山东省| 定兴县| 龙山县| 昔阳县| 温州市| 霍城县| 武平县| 江永县| 富川| 中牟县| 甘孜县| 中卫市| 民权县| 镇远县| 鹤庆县| 平利县| 隆尧县| 宣化县| 杂多县| 凉山| 伊宁市| 察哈| 峨山| 察隅县| 比如县| 奇台县| 灵山县| 栖霞市| 舞钢市| 建昌县| 兰坪| 那坡县| 平和县| 临漳县| 梧州市| 无锡市| 长武县| 靖江市| 特克斯县| 玛纳斯县| 资中县|