校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Lua中實現StringBuffer功能

Lua中實現StringBuffer功能

熱門標簽:百度地圖標注早餐區域 新岸線智能電銷機器人 武漢外呼防封系統多少錢 個人怎么在地圖標注需要的店鋪 清朝地圖標注哈爾濱 怎么去除地圖標注 冀州市地圖標注 漳州智云呼電話機器人 地圖標注大廈

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

您可能感興趣的文章:
  • js實現StringBuffer的簡單實例
  • JavaScript實現Java中StringBuffer的方法
  • 淺談js中StringBuffer類的實現方法及使用

標簽:天門 儋州 天門 濰坊 臺灣 德宏 金昌 宣城

巨人網絡通訊聲明:本文標題《Lua中實現StringBuffer功能》,本文關鍵詞  Lua,中,實現,StringBuffer,功能,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Lua中實現StringBuffer功能》相關的同類信息!
  • 本頁收集關于Lua中實現StringBuffer功能的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 台中县| 平原县| 都兰县| 华宁县| 井冈山市| 齐河县| 阳泉市| 乌什县| 磴口县| 桑植县| 吴江市| 铜鼓县| 曲麻莱县| 马龙县| 梨树县| 化隆| 沁阳市| 舒城县| 香港 | 伊金霍洛旗| 乌审旗| 新巴尔虎左旗| 沙坪坝区| 镇沅| 泰兴市| 和顺县| 祁门县| 乐业县| 大冶市| 宜州市| 固始县| 静乐县| 民勤县| 德清县| 韩城市| 和平区| 临武县| 岳池县| 长寿区| 荣成市| 吉水县|