Lua实现了一个安全的运行环境、一套自动内存管理机制、优秀的字符串处理能力和动态大小数据的处理功能。
我们都知道,只要应用程序加入lua解析器的功能,就能解析lua脚本。那lua脚本是怎样执行的?
我们通常用dofile去打开编译一个lua脚本。当应用程序调用dofile后,在执行完脚本后,才能后到主程序中,这lua脚本相当于一个函数。要等函数执行完才能回到主程序中。
在lua脚本中,一般有变量,函数,这些东西都保存在一个常规的table中,这个table称为“环境”。
loadfile、dofile、require
loadfile——只编译,不运行
dofile——执行
require——我只执行一次
用require函数只能加载一次,因为它的特性是:
1、require函数会搜索目录加载文件
2、require会判断是否文件已经加载避免重复加载同一文件。
但当有一些特殊的需求需要反复加载某个lua文件,那如何实现反复加载一个lua文件?
答案是:二次加载前加这一句
package.loaded[luafile] = nil
lua table
关联数组是一种具有特殊索引方式的数组。不仅可以通过整数来索引它,还可以使用字符串或其它类型的值(除了nil)来索引它。
调试库
调试库由两类函数组成:自省函数和钩子。自省函数允许检查一个正在运行中程序的各个方面,例如它的活动函数栈、当前执行的行、局部变量的名称和值。钩子则允许跟踪一个程序的执行。
lua使用优化建议
使用局部变量local
这是最基础也是最有用的策略,虽然使用全局变量并不能完全避免,但还是应该尽量避免,取而代之使用局部变量即local
。这里的局部变量也包括函数function
,因为在Lua里函数也是一个变量。局部变量的存取会更快,而且在生命周期之外就会释放掉。
尾调用
参考
http://wuzhiwei.net/lua_performance/