• Home
  • Posts
    • All Posts
    • All Tags
  • Daily Summary
  • Technical Debt
  • Valuable Blog
  • Projects
  • About
    • Robin photo

      Robin

      Write Elegant Code.

    • Learn More
    • Email
    • Github

Lua 入门笔记

概述

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。为啥呢?

  1. 这个隐式的下标只在没有 key 的 value 存在,就是说只有 value_2 和 value_4 才有这个东西
  2. Lua 的序列号是从 1 开始的,value_2 是 1,value_4 是 2

function

函数也是一种数据类型,也是可以被传递的。嗯,有点 Python 的感觉哈