麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > 綜合 > 正文

Lua中實現StringBuffer功能

2024-07-21 23:04:18
字體:
來源:轉載
供稿:網友

在Lua中,字符串是一個常量,如果用字符串連接符“..”把2個字符串連接起來,例如first_str = first_str .. second_str,那么原來的first_str和second_str就會作為垃圾等待回收,first_str引用的是一個新的字符串,如果在程序里面有大量的字符串連接操作的話,性能會十分低下。Lua是一個很簡潔的語言,他沒有StringBuffer的實現,但是其實我們可以動手寫一個簡單的StringBuffer實現,來避免性能的問題。

首先定義一個叫StringBuffer的table,使得這個StringBuffer被調用的時候看起來像是面向對象的樣子 :)
然后分別定義兩個方法append和tostr,實現的原理就是:append用table來保存所有字符串,tostr把保存了字符串的table用concat轉成真正的字符串。

 

復制代碼 代碼如下:

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

 

調用的時候大概如下,摘錄了一段代碼。。。

 

復制代碼 代碼如下:

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中實現這樣的一個StringBuffer,既可以避免潛在的性能問題,又可以使得代碼看起來更加易懂~好了,重構以前的代碼去了。。。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中文在线观看免费视频 | 看国产精品 | 久久精品久 | 日日草日日干 | 日韩视频不卡 | 91成人久久 | 亚洲嫩草av| 国产亚洲综合一区二区 | 天堂成人国产精品一区 | 精品国产一区二区三区在线 | 久久人操 | 欧美性生活久久 | 黄色大片网 | www.17c亚洲蜜桃 | 草久影视 | 极品xxxx欧美一区二区 | 国产亚洲精品久久久久久久软件 | 中文字幕精品在线观看 | 中国精品久久 | 狼人狠狠干 | 一级免费大片 | 黄色免费播放网站 | 黄色大片高清 | 一级在线视频 | 在线影院av | 免费在线观看亚洲 | 狠狠干天天操 | 精品国产91久久久久久久妲己 | 欧美a级毛片 | 失禁高潮抽搐喷水h | 伊人午夜视频 | 国产一级小视频 | 黄色成人短视频 | 特级毛片全部免费播放器 | 黄色羞羞视频在线观看 | 2021国产精品 | 久久国产精品电影 | 亚洲日韩精品欧美一区二区 | 特级黄毛片 | 亚洲精品欧美二区三区中文字幕 | 国产精品视频2021 |