lua 使用中遇到的坑总结

本文是作者作为一名Java程序员在使用Lua进行登录改造时的经验总结,分享了在Lua中遇到的一些常见问题及解决方法,包括:注意Lua版本差异,如math.mod函数的变化;字符串拼接应使用".."而非"+";理解"."与":"在方法调用中的区别;处理nil值的策略,尤其是在table循环中的特殊情况;以及如何避免因nil值导致的循环顺序异常。
摘要由CSDN通过智能技术生成

前言

竹子是 java 程序员一枚,最近在做一个登录的改造,用 lua 实现,现在基本算是告一段落,然后在此分享下在过程中遇到的坑吧。

一定要注意使用 lua 的版本,版本不同,可能有的函数就没有了,比如 bit 中的 math.mod 函数,5.1 之后就改为 fmod() 了,但是当时引入的还是之前的版本,就报错了,报错了,但是还找了好久的错误,也是醉了。这些可以参考 lua 官网的发布说明,看看每个版本的发布说明 。

http://www.lua.org/manual/5.1/manual.html#7.2

 

1.字符串拼接(不是 + 而是 "..")

做过java 的都知道,java 中字符串的拼接使用 + ,但是在 lua 里千万要注意,不是"+", "+" 在 Lua 里只表示算术运算,真正的拼接字符串是 ".."

看实例:

local str = "Hello," + 'bamboo'
ngx.say(str)

看运行结果:

2018/02/01 07:48:40 [error] 753#0: *766 lua entry thread aborted: runtime error: /app/lua_pro/lua_exercise/mobile_login_exercise/ng_test.lua:182: 
attempt to perform arithmetic on a string value 在 string 类型的数据上执行算术运算,所以肯定报错了,心累) stack traceback: coroutine
0: /app/lua_pro/lua_exercise/mobile_login_exercise/ng_test.lua: in function </app/lua_pro/lua_exercise/mobile_login_exercise/ng_test.lua:1>,
client: 172.17.0.1, server: localhost, request: "GET /ng_test HTTP/1.1", host: "localhost:8008"

这个一定要注意,竹子就是因为不注意,出了多次错,做为 java 程序员,这就是顺手的事呀。哈哈....

 

2.方法的调用 "." 和 ":"

这个也是很容易出错的地方,因为方法调用的时候用了".",而没有用 ":",出了好多次问题,宝宝心里苦呀,有的时候用 ".",有的时候用 ":",宝宝容易晕呀,有没有。不说了,来看例子.

ng_test.lua

local util1 = require 'util1'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值