在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中实现类的理解有困难的同学将会释疑。 类是什么? 想要实现类,就要知道类到底是什么。 在我看