主页 > 知识库 > 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功能的相关信息资讯供网民参考!
  • 推荐文章