Lua可以断点调试(想当年),但大部分团队大部分程序员还是主要靠日志输出
目录
所以日志挺重要的
一般用法
分字段打印
不知道是不是lua独有,写法比较奔放,无论传参和出参都没限制(无论项目大小,实际使用也明显无什么大问题),下面print_log为自定义扩展方法
对于习惯了 + 号的同学,可能会这么写,明显容易出错, 其中,bundleName非常容易为Nil
print_log("OnSceneLoadProgress -----"..bundleName .." "..1024)
cpp,c++可能会这么写
print_log(string.format("OnSceneLoadProgress ----- %s %d", " ", 1024)
但是Lua是这么写d
print_log("OnSceneLoadProgress ----- ", per_value, " ", debug.traceback())
不支持链接布尔值连接,这样写不行的
print_log("try log 布尔" + bol)
打印堆栈
debug.traceback方法
print_log("OnSceneLoadProgress ----- ", per_value, " ", debug.traceback())
各方法详细解释
程序员的个人修养(高级语法)
(不断补充中,会很慢,很长,很漫长)
其实,你只要在你的lua项目中(10人以上团队)找一下lib,tool,util等关键字,就能看到很多“高级”语法;这是无论百度还是书本都没有的宝贵实践经验
断言Asset
-- 之前有一个同事很喜欢用,对lua语法的掌握还是很有帮助的,只是结合Unity(因为本身有太多封装,也鼓励用plugin)之后有点不太好使,不过用用也无妨
安全调用pcall
pcall(function)
可能会返回:
成功:true和函数的返回值[s] .
失败:错误和错误 .
调用xpcall
SaveCall = {}
function SaveCall.Call(func,par)
local status,ret = xpcall(func,SaveCall.traceback,par)
print_log("SaveCall,status="..tostring(status))
return ret
end
function SaveCall.traceback(err)
print_error("LUA ERROR: " .. tostring(err))--已经会打印堆栈,而 print_error 这个打印方法你懂的,如果没额外自创建,可以用原生 print 方法
--print_error(debug.traceback()) --因为哥的框架有做lua 错误爆堆栈,所以无需和网上”一般见识“,这只会多打印一次堆栈
end