欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

復制代碼 代碼如下:

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)用的時候大概如下,摘錄了一段代碼。。。

復制代碼 代碼如下:

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

相關(guān)文章

  • Lua教程(一):簡介、優(yōu)勢和應用場景介紹

    Lua教程(一):簡介、優(yōu)勢和應用場景介紹

    這篇文章主要介紹了Lua教程(一):簡介、優(yōu)勢和應用場景介紹,本文是Lua教程系列文章的第一篇,需要的朋友可以參考下
    2015-04-04
  • Lua的內(nèi)存管理淺析

    Lua的內(nèi)存管理淺析

    這篇文章主要介紹了Lua的內(nèi)存管理淺析,本文講解了內(nèi)存管理的相關(guān)知識,同時講解了垃圾收集器的機制,需要的朋友可以參考下
    2014-09-09
  • 舉例簡介Lua中函數(shù)的基本用法

    舉例簡介Lua中函數(shù)的基本用法

    這篇文章主要介紹了舉例簡介Lua中函數(shù)的基本用法,--兩個橫線開始單行的注釋,--[[加上兩個[和]表示多行的注釋--]],需要的朋友可以參考下
    2015-07-07
  • Lua中關(guān)于元方法的一些知識點小結(jié)

    Lua中關(guān)于元方法的一些知識點小結(jié)

    這篇文章主要介紹了Lua中關(guān)于元方法的一些知識點小結(jié),本文講解了兩個具有不同元表的值進行算術(shù)操作、關(guān)系類的元方法、保護元表,需要的朋友可以參考下
    2014-09-09
  • Lua中創(chuàng)建全局變量的小技巧(禁止未預期的全局變量)

    Lua中創(chuàng)建全局變量的小技巧(禁止未預期的全局變量)

    這篇文章主要介紹了Lua中創(chuàng)建全局變量的小技巧(禁止未預期的全局變量),使用本文方法可以實現(xiàn)避免創(chuàng)建全局變量,在必須使用全局變量的情況下也給出了實現(xiàn)技巧,需要的朋友可以參考下
    2014-12-12
  • Lua判斷Table是否為空的方法(空的table即{})

    Lua判斷Table是否為空的方法(空的table即{})

    這篇文章主要介紹了Lua判斷Table是否為空的方法(空的table即{}),如何判斷l(xiāng)ua中的table是否是空的table呢,本文就試驗了多個方法,最后得出比較好的判斷方法,需要的朋友可以參考下
    2015-04-04
  • Lua文件讀寫詳解

    Lua文件讀寫詳解

    這篇文章主要介紹了Lua文件讀寫詳解,本文講解了文件讀寫的簡單模型和完整模型,并給出了一個操作示例,需要的朋友可以參考下
    2015-04-04
  • Lua極簡入門指南(三): loadfile和錯誤處理

    Lua極簡入門指南(三): loadfile和錯誤處理

    這篇文章主要介紹了Lua極簡入門指南(三): loadfile和錯誤處理以及追蹤錯誤等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • Lua中的__index方法詳解

    Lua中的__index方法詳解

    這篇文章主要介紹了Lua中的__index方法詳解,本文詳細講解了__index方法的相關(guān)知識,以及代碼示例,需要的朋友可以參考下
    2015-04-04
  • Lua中遍歷文件操作代碼實例

    Lua中遍歷文件操作代碼實例

    這篇文章主要介紹了Lua中遍歷文件操作代碼實例,本文直接給出示例代碼,需要的朋友可以參考下
    2015-05-05

最新評論