• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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函数传递到C/C++中实例
    下一篇:Lua中的string库(字符串函数库)总结
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Lua中实现StringBuffer功能 Lua,中,实现,StringBuffer,功能,