String
1.lua是8位字节,可以存储0,可以存储任意二进制数据,1M的string在lua中很常见
2.string转换数字可以用tonumber(),如果string不是正确的数据则返回nil
3.数字转换成string可以用tostring(),也可以用numbers .. ""
逻辑运算符
and or not
a and b -- 如果a为false则返回a,否则返回b
a or b -- 如果a为true则返回a,否则返回b
C语言中的三元运算符
a ? b : c
Lua中可以这样实现:
(a and b) or c
局部变量与代码块
应该尽可能的使用局部变量,有两个好处:
1.避免命名冲突
2.访问局部变量比全局变量快
函数-多返回值
function foo () return 'a', 'b' end
x, y = foo(), 10 -- x = a, y = 10
x, y, z = foo() , 10, 20 -- x = a, y = 10, z = 20
print(foo()) -- a, b
print(foo(), 1) -- a, 1
a = {foo()} -- a[1] = a, a[2] = b
a = {foo(), 4} -- a[1] = a, a[2] = 4
可以使用圆括号强制返回一个值
print((foo())) -- a
unpack
返回table
f = string.find()
a = {"hello", "ll"}
print(f(unpack(a))) -- 3, 4
info = {1, 2, 3, 4, 5, 6}
a, b, c, d, e, f = unpack(info); -- 1, 2, 3, 4, 5, 6