nil
和false
是false,其他的如数字0
、''
空字符串('\0'
)都是true。~=
,而不是!=
..
and
, or
, not
关键字。#arr
即数组的长度local
关键字,全都是全局变量,Lua也是用table来管理全局变量的,Lua把这些全局变量放在了一个叫_G
的table里。T
:for k, v in pairs(T) do
print(k, v)
metatable 和 metamethod;setmetatable、getmetatable;Lua内建约定的metamethod有:
__add(a, b)
对应表达式 a + b
__sub(a, b)
对应表达式 a - b
__mul(a, b)
对应表达式 a * b
__div(a, b)
对应表达式 a / b
__mod(a, b)
对应表达式 a % b
__pow(a, b)
对应表达式 a ^ b
__unm(a)
对应表达式 -a
__concat(a, b)
对应表达式 a .. b
__len(a)
对应表达式 #a
__eq(a, b)
对应表达式 a == b
__lt(a, b)
对应表达式 a < b
__le(a, b)
对应表达式 a <= b
__index(a, b)
对应表达式 a.b
__newindex(a, b, c)
对应表达式 a.b = c
__call(a, ...)
对应表达式 a(...)
require
函数,载入同样的lua文件时,只有第一次的时候会去执行,后面的相同的都不执行了(说明模块加载有缓存);如果要让每一次文件都会执行,可以使用dofile("module_name")
函数;如果想载入后不执行,等需要的时候再执行,可以使用loadfile("module_name")
函数。