在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轉成真正的字符串。
調用的時候大概如下,摘錄了一段代碼。。。
在Lua中實現這樣的一個StringBuffer,既可以避免潛在的性能問題,又可以使得代碼看起來更加易懂~好了,重構以前的代碼去了。。。
新聞熱點
疑難解答