<div class="markdown-body">
<ul>
Lua快,LuaJIT更快
用源码的方式安装LuaJIT 2.1版本,虽然是beta版本,但是比正式版本的2.0的效率高
安装好Lua后运行ln -sf luajit-2.1.0-beta1 /usr/local/bin/luajit
才能在命令行使用luajit命令
type()方法显示变量类型
nil表示空类型
boolean:0和false为假,其他为真
除单引号、双引号外可以用长括号的方式定义字符串,[[0级,[=[1级,[==[2级
字符串会内化(intern),值相同的字符串存储在相同的地址中,比较两个字符串值是否相同即比较他们的地址是否一致
函数也是一种数据类型,有名函数的定义本质上是匿名函数对变量的赋值
^指数
~=不等于
a and b a为nil返回a,否则返回b
a or b a为nil返回b,否则返回a
不要在循环中进行大量的字符串的拼接,会生成很多新的字符串,用table和table.contact代替,或使用table.new
..用来进行字符串的拼接
elseif和else if不同,else if表示在else中嵌套了if
while语句有break,没有continue;没有do-while,有repeat
repeat-until直到条件为真时结束
for var=begin,finish(,step) do step可省略,默认为1,不想设置上限时,可以让finish=math.huge
for i,v in ipairs(array) do 通过迭代器ipairs遍历数组中的值
其他迭代器包括:io.lines迭代文档中的每行;pairs迭代table元素;string.gmatch迭代字符串
ipairs()可以被JIT编译,pairs()只能被解释执行。在性能敏感的场景,避免对表遍历
return只能写在语句块的最后,一旦执行了return语句,该语句之后的所有语句都不会再执行
全局变量会污染全局变量空间,有性能损耗,尽量使用局部变量和局部函数:local