第一类值
可以将某个函数保存到变量中(全局变量和局部变量)或表中
也可以将某个函数作为参数传递给其他函数
还可以将某个函数作为其他函数的返回值返回
例:
a = {p = print} -- 'a.p'指向'print'函数
a.p("Hello World") -->Hello World
非全局函数
local function f(params)
body
end
词法定界
一个被其他函数B包含的函数A时,被包含的函数A可以访问包含其的函数B的所有局部变量
例
模式匹配相关函数
Lua语言没有POSIX正则表达式,也没有使用Perl正则表达式
函数string.find 有两个可选参数,第3个参数是一个索引,说明从目标字符串哪个位置开始,返回开始位置的索引和结束位置的索引
例
s = "hello world"
-
i, j = string.find(s, "hello")
函数string.match 返回的是目标字符串与模式相匹配的那部分子串
例:print(string.match ("hello world", "hello")) --> hello
函数string.gsub 有3个必选参数:目标字符串、模式和替换字符串
例:s = string.gsub("Lua is cute","cute", "great")
函数string.gmatch 返回一个函数,通过返回的函数可以遍历一个字符串中所有出现的指定模式
Lua中使用'%'作为转义符
. 任意字符
%a 字母
%c 控制字符
%d 数字
%g 除空格外的可打印字符
%l 小写字母
%p 标点符号
%s 空白字符
%u 大写字母
%w 字母和数字
%x 十六进制数字
日期和时间
-
数字表示,通常是一个整型数
-
日期表,year、month、day、hour、min、sec、wday、yday、isdst
os.time()返回以数字形式返回当前的时间戳, 以一个日期表作为参数调用函数 os.time,那么该函数会返回对应的时间戳
例:
os.time() --1600312802
os.time({year=2015, month=8, day=15, hour=12, min=45, sec=20})
--> 1439653520
os.date() 格式化时间
%a 星期几的简写(例如, Wed)
%A 星期几的全名(例如, Wednesday)
%b 月份的简写(例如, Sep)
%B 月份的全名(例如, September
%c 日期和时间(例如, 的/ 16/98 23: 48: 10)
%d 一个月中的第 16) [01 - 31]
%H 24 小时制中的小时数(23 [00- 23]
%I 12 小时制中的小时数(11) [01 - 12]
%j 一年中的 259) [001- 365]
%m 月份(09) [01 - 12]
%M 分钟(48 [00- 59]
%p am pm pm
%S 秒数(10) [00- 60]
%w 星期( [0-6 =Sunday- Saturday]
%W 一年中的第几周(37 [00- 53]
%x 日期(例如, 09/16/98)
%X 时间(例如 23: 48: 10)
%y 两位数的年份(98) [00-99]
%Y 完整的年份(1998
%z 时区(例如, 0300)
%% 百分号
例:print(os.date("%Y-%m-%d %H:%M:%S", os.time()))
os.difftime计算两个时间的差值,返回秒为单位返回两个指定数字