Lua 备忘清单 & lua cheatsheet & 速查表

初始化数组

初始化一个空数组

local array = {} 

默认的数组索引从 1 开始

local array = { "a", "b", "c", "d" }
array[5] = "e"

for i = 1, 5 do
  print(array[i])
end

多维数组

local array = {
  { "a", "b", "c" },
  { "d", "e", "f" }
}

for i = 1, #array do
  for j = 1, #array[i] do
    print(array[i][j])
  end
end

初始化 table

local table = {}

table.name = "fw"
table.age = "18"
table["sex"] = "boy"

-- 获取 table 的长度

print(#table) -- 0

-- 如果想要删除一个 table,那么可以使用 nil 赋值
table = nil
print(table)

table 方法

-- 用于连接 table 中指定的元素
-- table.concat(table [, sep [, start [, end]]])
local a = { "apple", "orange", "peach" }
print(table.concat(a, "->", 2, 3)) -- orange->peach

-- 用于向指定闻之插入元素。默认数组末尾
-- table.insert(table, [pos,] value)
local a = { "apple", "orange", "peach" }
table.insert(a, 1, "pear")
print(a[1]) -- pear

-- table.move(a1,f,e,t[,a2])
-- 表a1,a1下标开始位置f,a1下标结束位置e,t选择移动到的开始位置(如果没有a2,默认a1的下标)
local array = { "a", "b", "c" }

for i,v in pairs(table.move(array, 1, 3, 2)) do
  print(v)
end -- a a b c

-- table.sort (table [, comp])
-- 排序,默认是升序
local array = { "a", "c", "b" }

local f = function(a, b)
  return string.byte(a) - string.byte(b) > 0
end

table.sort(array, f)
for i, v in pairs(array) do
  print(v)
end -- c b a

迭代器

无状态的迭代器

function square(d,n)
   if n < d
   then
      n = n + 1
   return n, n*n
   end
end

for i,n in square,5,0
do
   print(i,n)
end

for 循环迭代器

for i, n in pairs({ 1, 2, 3, 4 }) do
  print(i, n)
end