lua开发入门小坑记录

起因

在下本来是做Java开发的,然后老大突然给我下发一个任务——面向国产网关apisix做插件开发,然后看了一下,插件是用lua语言开发的,然后就上手了lua进行了一段时间开发。
经过一阵子学习,只能说是刚刚入门,基本是掌握一定的编写运用,再更深层次的理解使用还是欠缺的,为了让这阵子踩坑的时间不白费,我决定还是记录一下一些小错误。

学习资源

在摸索的过程中我还是留下了一两个比较好的参考资料
一个openresty的gitbook: https://moonbingbing.gitbooks.io/openresty-best-practices/content/lua/main.html
经典的菜鸟教程: https://www.runoob.com/lua/lua-tutorial.html

个人总结

因为我需要到达的程度只是能进行apisix业务开发,所以更深入的知识我也没涉足,只能提供一些浅显的小坑经验了。

  1. 使用习惯
    • 字符串拼接
      这个其实是比较简单普遍的一个点,在 Java 中最顺手的字符串拼接是"str1" + "str2",而在 lua 开发中,普遍运用的是..,两个字符串拼接是"str1".."str2"
    • 不等于
      在Java开发中,不等于的符号为 !=,而在lua开发时,不等于符号为 ~=
    • 导包
      因为我没有找到什么比较容易上手的自动补全编写工具,我基本上都是手动导包的,此处要注意导包的路径,导包的写法为your_var = require("your_place.your_place")
    • 变量引用
      lua 里面要是突然引用什么变量的时候,一定要初始化一下,不然就会报 nil 错误,这个 nil 真的贯穿我的整个开发时间,你对着 vscode 写的时候真的就不知道哪个变量忘了初始化。
  2. 语言相关
    1. pairs 和 iparis
      这两个都是用来遍历 lua 中的table的,但是区别在于ipairs不会遍历数组内的 table 类型,而pairs 是会遍历其中的table类型的。
    2. table里可以放什么
      lua中的 table 不需要像 Java 中的数组一样指定类型,所以就是它可以同时存不同类型的东西在里面
    3. 判断数组大小
      在 lua 中,#是一个神奇的符号,可以用在获取字符串的长度和数组的长度,具体用法为str_length = #str_namearr_length = #array_name
    4. 入参出参
      lua中是可以多个入参和多个出参的,比如 local a, b, c = func(d, e, f),很多方法都是这样写的,一时间我真的没习惯过来
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值