概述
Lua,久闻其名,公司这次让我用 Lua + Nginx 的方式做灰度流量分发,因此有了一些机会接触 Lua。
OpenResty 最佳实践 这本书给了我很大的帮助,书的最终目的是教会你结合 OpenResty 将 Nginx 打造成一个高性能的 Web Server。但书里面的 Lua 教程也非常简洁实用,适合入门。
基本数据类型
nil
啊,空空如也。nil 是 Lua 里面的空类型,相当于 Java 的 null
boolean
nil 和 false 为假,其余都是真。也就是说除了显式的说明 false 是假以外,隐式的假就只有 nil 了。
number
int, long, double, float 傻傻分不清楚?通通只要一个 number!
string
local str_1 = 'string_1'
local str_2 = "string_2"
local str_3 = [[string\nanother string]] -- 换行符会被忽略
Lua 里面字符串可以用单引号也可以用双引号,这点和 Python 很相似。还有一个比较特殊的俩方括号,会忽略里面的任何转义符号。更复杂的…我没用到,就不写在这了
table
总有一种 Lua 里面只有 table 一种数据结构的感觉。数组实际上也是一个 table,不过 table 的 key 是数组下标罢了。这里写一种很蛋疼的情况。
local t = {"key_1" = "value_1", value_2, "key_3" = "value_3", value_4}
print(t[2])
猜猜看会输出啥?会打印 value_4
。为啥呢?
- 这个隐式的下标只在没有 key 的 value 存在,就是说只有
value_2
和value_4
才有这个东西 - Lua 的序列号是从 1 开始的,
value_2
是 1,value_4
是 2
function
函数也是一种数据类型,也是可以被传递的。嗯,有点 Python 的感觉哈