当前位置: 首页 > 编程笔记 >

Lua中实现StringBuffer功能

季华茂
2023-03-14
本文向大家介绍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,既可以避免潜在的性能问题,又可以使得代码看起来更加易懂~好了,重构以前的代码去了。。。

 类似资料:
  • 本文向大家介绍JavaScript实现Java中StringBuffer的方法,包括了JavaScript实现Java中StringBuffer的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript实现Java中StringBuffer的方法。分享给大家供大家参考。具体如下: Javascript StringBuffer类的实现是通过prototype构造一个Stri

  • 本文向大家介绍Lua中实现sleep函数功能的4种方法,包括了Lua中实现sleep函数功能的4种方法的使用技巧和注意事项,需要的朋友参考一下 一个不幸的消息是Lua中没有内置sleep函数,我们需要DIY。有4种方法可以实现sleep函数,如下: 方法1 方法2 方法3 方法4

  • 本文向大家介绍Lua中类的实现,包括了Lua中类的实现的使用技巧和注意事项,需要的朋友参考一下 概述      一个类就是像是一个创建对象的模具,对于Lua这种没有类的概念的语言,为了模拟类,方法是为要创建的对象制定一个原型(prototype)。这个原型相当于其他语言中的类。但是原型同时也是一种常规的对象,当其他的对象(看成是原型的实例)遇到一个未知的操作时,就会去原型中查找。因此,在Lua这种

  • 本文向大家介绍使用lua实现php的print_r()函数功能,包括了使用lua实现php的print_r()函数功能的使用技巧和注意事项,需要的朋友参考一下 之前写了一些类似php的函数,下面再来一个print_r()函数,代码如下:

  • 本文向大家介绍使用lua实现php的var_dump()函数功能,包括了使用lua实现php的var_dump()函数功能的使用技巧和注意事项,需要的朋友参考一下 习惯了php中的var_dump()函数,而如今写lua的时候总习惯使用var_dump()函数,于是就自己动手写了一个类似功能的var_dump()函数。

  • 本文向大家介绍Lua中类的实现原理探讨(Lua中实现类的方法),包括了Lua中类的实现原理探讨(Lua中实现类的方法)的使用技巧和注意事项,需要的朋友参考一下 Lua中没有类的概念,但我们可以利用Lua本身的语言特性来实现类。 下文将详细的解释在Lua中实现类的原理,涉及到的细节点将拆分出来讲,相信对Lua中实现类的理解有困难的同学将会释疑。 类是什么? 想要实现类,就要知道类到底是什么。 在我看