一 LuaJIT分支和标准Lua有什么不同
① 背景
luajit官方 标准lua官方 openresty自身维护的luajit 编译luajit
② LuaJIT 在 OpenResty 整体架构中的位置
③ 标准 Lua 和 LuaJIT 的关系
④ 为什么选择LuaJIT
⑤ lua特别之处
1)Lua 的'下标'从'1'开始
2) 使用 '..' 来'拼接'字符串
3) 只有 'table' 这一种'数据'结构
备注: 其它'高级特性'都是基于table模拟出的
补充: 只有在 table 是 '序列 sequence' 的时候,才能返回'正确'的'length'值
pairs和ipairs看table的内部结构
[1] table在'存储值'的时候是按照'顺序'的
备注: 序列'不'应该含有 'nil' 的,array 是可以'包含' nil
[2] 但是在'存储键值对'时候是按照'键的哈希值'存储的,'并不会'按照键的字母顺序或是数字顺序存储
备注: '杂表',即使'元素为空nil'的时候,也会'分配一个key'给它
强调: lua中的table最终在'内存中分配'都是'键值对'的形式
[3] 建议大家'绕着走',把 nil 改为 ngx.null 来'填充数组',不同的 lua 版本会有'不同的行为'
nil、ngx.null、cjson.null、userdata: null
4) 默认是'全局'变量
最佳实践: 在 lua 中'声明变量'时,前面都要加上 'local'
local name = 'wzj'
local xxx = require('xxx')
1、 if必须要'有end',在python和lua之间切换会'很不习惯'
2、 一般一个对象访问属性是'用冒号:',而不是'点.',也会经常性'写错'
⑥ LuaJIT
⑦ 小结
⑧ 答疑解惑