Lua os.date 笔记 - 2017-05-05 17:32:23

os.date ([format [, time]]) 若设置time参数,则按time指定的时间格式化,否则按当前时间格式化 > os.date() Mon May 16 14:26:32 2016 > os.date("%x", os.time()) 05/16/16 如果format 以 ! 开始, date 会被格式化成协调世界时(Coordinated Universal Time) *t 将返一个带year(4位), month(1-12), day (1–31), hour (0-23), min (0-59), sec (0-61), wday (星期几, 星期天为1), yday (年内天数), isdst (是否为日光节约时间true/false)的表 > print(os.date ("*t")) table: 0x7fc1aaf01200 > print(os.date ("*t").year) 2017 > print(os.date ("*t").hour) 14 > print(os.date ("*t").wday) 3 若没有*t则返回一个按C的strftime函数格式化的字符串 若不带参数,则按当前系统的设置返回格式化的字符串 os.date() <=> os.date(“%c”) format 参考 %a - Abbreviated weekday name (eg.

Lua 错误处理 pcall & xpcall - 2017-05-05 17:32:23

pcall pcall 指的是 protected call 类似其它语言里的 try-catch, 使用pcall 调用函数,如果函数 f 中发生了错误, 它并不会抛出一个错误,而是返回错误的状态, 为被执行函数提供一个保护模式,保证程序不会意外终止 语法 pcall( f , arg1,···) 返回值 函数执行状态 (boolean) 没有错误返回 true 有错误返回 false 发生错误返回错误信息,否则返回函数调用返回值 pcall 示例 使用pcall 处理错误 function square(a) return a * "a" end local status, retval = pcall(square,10); print ("Status: ", status) -- 打印 "false" print ("Return Value: ", retval) -- 打印 "input:2: attempt to perform arithmetic on a string value" 正常没错误

lua __index __newindex 规则总结 - 2017-05-05 17:32:23

__index 规则总结 lua 中元方法 __index 表示表中索引查找失败处理方法,lua 中基它 元方法 查找元表流程 在表中查找,如果找到,返回该元素,找不到则继续 判断该表是否有元表,如果没有元表,返回nil,有元表则继续 判断元表中有没有__index方法,如果没有,则返回nil, 如果__index方法是一个表,则重复上面的步骤,如果__index方法是一个函数,则返回该函数的返回值 示例代码Gist local a = { field1 = 1 } local b = { field2 = 2 } -- 声明表a b -- 设置 a 的元表是 b setmetatable(a, b) print(a.field1) -- 1 print(a.field2) -- nil, field2是 表b的,a现在并不会查找元表b,元表中未定义__index方法 b.__index = b -- 设置b的__index 为 b print(a.field2) -- 2 打印2,因为设置__index为b,a中没有field2,从__index设置的表b查找 -- __index 也可以设置成函数,当被它调用时,会把被访问的表和索引作为参数传入 b.__index = function(t, key) print(key) -- 打印访问的key return t.

luacheck Inline options - 2017-05-05 17:32:23

可以直接在源码层面 配置 luachek 选项,优先级最高 格式 以 luacheck: 开头,后边空格 + 配置选项 例如: --luacheck: no unused args 那行代码的如果有未使用的参数warning,会被过滤掉warning 支持的选项 规则 影响的检查的代码和Inline options所处的位置有关, 如果是一行代码后边设置了Inline options,则这行代码受影响 否则,会影响代码块结束 比如 -- luacheck: globals g1 g2, ignore foo local foo = g1(g2) -- 前面设置了全局变量g1 g2,忽略foo -- 下面的也不会报 local function f() -- luacheck: ignore -- luacheck: globals g3 g3() -- 上边设置了全局变量g3,所以不会有warning end g3() -- 会有warning, 上边的设置只作用于函数f luacheck 结果 Checking aa.lua 1 warning aa.lua:10:1: accessing undefined variable g3 Total: 1 warning / 0 errors in 1 file 没有设置inline options,luacheck 结果