lua中可变数量参数的函数
海
posted @ 2008年5月23日 07:45
in Lua
, 4775 阅读
在lua中定义一个可以接受可变数量参数的函数如下:
printResult = ""
function print (...)
for i,v in ipairs(arg) do
printResult = printResult .. tostring(v) .. "\t"
end
printResult = printResult .. "\n"
end
...代表可变数量的参数,lua会把实际调用的参数组织成一个table,在函数中可以通过arg引用这个table,table和python中的dict,javascript中的对象类似,感觉应该是和javascript比较像,lua也是通过table实现了面向对象的功能,并且与javascript的prototype-based OO比较像。当然这个table除了实参外,还多了一个域名字为n,保存实参的个数。在lua中函数可以有多个返回值,可以local s1,s2=string.find(s, p) 获取多个返回值。用unpack函数可以把arg解开传给另外一个函数。
在context中某个lua脚本文件里直接通过...调用另外一个函数,这和unpack的作用是否相同,还没发现有介绍,继续学习。
PS:刚开始学习lua脚本语言,只是把自己看到的记录下来,加深印象,错误在所难免。
2008年5月23日 19:16 > 在context中某个lua脚本文件里直接通过 此 context 是指 ConTeXt 么?
2008年5月23日 22:55 对呀,不过ConTeXt用luatex做引擎实在是太消耗内存了,动辄4、5百兆内存,不知道是不是因为使用了fontforge的问题。浏览了一下font-otf.lua,竟然有这样的注释:can save much memory and faster。我想如果不做优化,那岂不是要占用上G的内存了,呵呵!
2008年5月24日 03:02 同感,应该是 fontforge 的问题。我最近一直在用,幸好我内存比较足。
2008年5月24日 03:37
http://bbs.ctex.org/viewthread.php?tid=40391
2008年5月24日 04:02 谢谢啊,现阶段还在学习的阶段,水平不够,还没用到实际工作中拍板文章。况且luatex还没时限对中文的完整支持。
2008年6月01日 06:17
确实是由于fontforge比较吃内存。一般来说LuaTeX会把整个字体中所有的信息都读入内存中,而不仅仅像XeTeX那样仅仅读bounding box。这样做唯一的好处,可能就是为了将来能动态字体生成吧,呵呵。
不过理论上来说现在第二次编译文档占用的内存和编译的速度和第一次比起来会非常快,因为目前cache机制已经比较成熟了。
2008年6月01日 19:32
昨天,我复习了一下 XeTeX,它占的内存也不少。我对比了一下,处理中文,LuaTeX 现在大概需要200多M,XeTeX 大概要100多M。
不过 LuaTeX 文档编译速度比 XeTeX 差得多得多,即使用 cache,我这里也需要 5 秒左右,而 XeTeX 也就是眨眨眼睛的功夫。