Orion's Studio.

Lua小心得

2016/04/10

变量

删除变量:把变量赋值为 nil

1
2
b = nil
print(b) -- nil

Lua 和 Go 一样支持多变量同时赋值

1
2
3
a, b = 10, 5	-- a=10; b=5;
x, y = y, x -- swap 'x' for 'y'
a, b = f() -- f()有两个返回值

尽可能使用局部变量,优点:

  1. 避免命名冲突。
  2. 访问局部变量的速度比全局变量更快。

数组

  • 不同于其他语言的数组把 0 作为数组的初始索引,在 Lua 里表的默认初始索引一般以 1 开始
  • 声明数组的时候可以 { [key] = value, … };也可以直接 { value, … },这时根据出现的顺序 key 分别为1,2,3,…,且优先级比 [key] = value 高

判断

Lua 把 false 和 nil 看作是”假”,其他的都为”真”

1
2
3
4
5
6
if 0 then
print(true)
else
print(false)
end
-- true

循环

while循环

1
2
3
4
while( true )
do
print("go on forever")
end

for循环

数值for循环

1
2
3
4
-- 1为起始值,10为结束值,2为步长
for i = 1, 10, 2 do
...
end

泛型for循环

1
2
3
for key, val in pairs(tbl_name) do
...
end

Tips:
pairs 迭代 table 元素,可以遍历表中所有的 key ,可以返回 nil ; ipairs 迭代数组元素,不可以返回 nil ,如果遇到 nil 则退出,它按照1,2,3,…的顺序遍历直到遇到值为 nil 的 key为止

until循环

不同于其他循环:until先循环再判断

1
2
3
repeat
statements
while( condition )

函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-- ... 表示可变参数,#arg 表示传入参数的个数
function average(...)
result = 0
local arg={...}
for i,v in ipairs(arg) do
result = result + v
end
print("总共传入 " .. #arg .. " 个数")
return result/#arg
end
print("平均值为",average(10,5,3,4,5,6))
--[[
总共传入 6 个数
平均值为 5.5
]]

print(a,b,c)中间会插入\t,io.write(a, b, c)中间无插入;print 会自动调用参数的 tostring 方法

运算符

运算符 功能 举例
.. 连接两个字符串 a..b ,a = “Hello “ , b = “World”, 结果 “Hello World”
# 返回字符串或表的长度 #”Hello” 返回 5
1
print(x^y^z)	-- x^(y^z)

数据库

Lua支持的数据库有:ODBC, ADO, Oracle, MySQL, SQLite 和 PostgreSQL。

CATALOG
  1. 1. 变量
  2. 2. 数组
  3. 3. 判断
  4. 4. 循环
    1. 4.1. while循环
    2. 4.2. for循环
      1. 4.2.1. 数值for循环
      2. 4.2.2. 泛型for循环
    3. 4.3. until循环
  5. 5. 函数
  6. 6. 运算符
  7. 7. 数据库