Lua中实现StringBuffer功能

 更新时间:2014年11月06日 12:02:59   投稿:junjie  
这篇文章主要介绍了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,既可以避免潜在的性能问题,又可以使得代码看起来更加易懂~好了,重构以前的代码去了。。。

相关文章

  • Lua教程(一):简介、优势和应用场景介绍

    Lua教程(一):简介、优势和应用场景介绍

    这篇文章主要介绍了Lua教程(一):简介、优势和应用场景介绍,本文是Lua教程系列文章的第一篇,需要的朋友可以参考下
    2015-04-04
  • Lua的内存管理浅析

    Lua的内存管理浅析

    这篇文章主要介绍了Lua的内存管理浅析,本文讲解了内存管理的相关知识,同时讲解了垃圾收集器的机制,需要的朋友可以参考下
    2014-09-09
  • 举例简介Lua中函数的基本用法

    举例简介Lua中函数的基本用法

    这篇文章主要介绍了举例简介Lua中函数的基本用法,--两个横线开始单行的注释,--[[加上两个[和]表示多行的注释--]],需要的朋友可以参考下
    2015-07-07
  • Lua中关于元方法的一些知识点小结

    Lua中关于元方法的一些知识点小结

    这篇文章主要介绍了Lua中关于元方法的一些知识点小结,本文讲解了两个具有不同元表的值进行算术操作、关系类的元方法、保护元表,需要的朋友可以参考下
    2014-09-09
  • Lua中创建全局变量的小技巧(禁止未预期的全局变量)

    Lua中创建全局变量的小技巧(禁止未预期的全局变量)

    这篇文章主要介绍了Lua中创建全局变量的小技巧(禁止未预期的全局变量),使用本文方法可以实现避免创建全局变量,在必须使用全局变量的情况下也给出了实现技巧,需要的朋友可以参考下
    2014-12-12
  • Lua判断Table是否为空的方法(空的table即{})

    Lua判断Table是否为空的方法(空的table即{})

    这篇文章主要介绍了Lua判断Table是否为空的方法(空的table即{}),如何判断lua中的table是否是空的table呢,本文就试验了多个方法,最后得出比较好的判断方法,需要的朋友可以参考下
    2015-04-04
  • Lua文件读写详解

    Lua文件读写详解

    这篇文章主要介绍了Lua文件读写详解,本文讲解了文件读写的简单模型和完整模型,并给出了一个操作示例,需要的朋友可以参考下
    2015-04-04
  • Lua极简入门指南(三): loadfile和错误处理

    Lua极简入门指南(三): loadfile和错误处理

    这篇文章主要介绍了Lua极简入门指南(三): loadfile和错误处理以及追踪错误等内容,需要的朋友可以参考下
    2014-10-10
  • Lua中的__index方法详解

    Lua中的__index方法详解

    这篇文章主要介绍了Lua中的__index方法详解,本文详细讲解了__index方法的相关知识,以及代码示例,需要的朋友可以参考下
    2015-04-04
  • Lua中遍历文件操作代码实例

    Lua中遍历文件操作代码实例

    这篇文章主要介绍了Lua中遍历文件操作代码实例,本文直接给出示例代码,需要的朋友可以参考下
    2015-05-05

最新评论