这几天在学习Redis的时间顺便也接触了Lua这个脚本语言,感觉Lua语法还算简单,但是初次接触有几个需要注意的地方,这里打算记录一下。
- 如果想在Windows10上面使用Lua编写脚本,可以去这里下相应的软件包:LuaDist,下完后记得去你的环境变量里面添加相应的路径Path(比如掌柜这里是E盘就按下面这个写法):
保存后在命令行输入lua,出现版本信息就代表安装好了Lua的配置环境。
- Lua语言里面所有的变量都是默认全局变量,默认值都是nil;如果赋值,全局变量的值则改变,但是用local定义的局部变量却不会变。。。 可以看下面这个例子:
用local定义b为局部变量,然后虽然被赋值了 6,但是print的时候还是输出了nil。这是为什么呢?因为用local把b定义为局部变量后,它的赋值只在当前行有效,一旦离开了此行,b就恢复为全局变量!
那么怎样才可以让上面用loca定义的b局部变量的赋值生效呢?
记得 在程序中使用do…end标记代码块的范围。 即可生效(这个很重要!!!),看下面这个例子:
看这样就会正确输出local定义后局部变量b的值。 - Lua5.1版本开始支持调用外部模块在Lua脚本里,语法就是直接require(‘module’)即可。 这个就有点类似Python里面的调用某个库,当然你也可以自己写个模块,比如下面这个测试的示例:
-- 在VSCode里面创建一个文件名为 module.lua的文件
-- 而这个模块定义为 module
module = {
}
-- 定义一个常量
module.constant = "this is a constant"
-- 定义一个函数
function module.func1()
io.write("this is a public function!\n")
end
-- 定义func2为局部变量
local function func2()
print("this is a private function!")
end
-- 定义func3调用func2
function module.func3()
func2()
end
return module
然后把这个module.lua的文件放到lib的lua文件夹下面:
最后在Lua里面调用刚刚新建的这个module模块就可以得到module里面的数据:
这次算是对Lua进行了一个初探,挺有趣的这个Lua语言,后面有机会掌柜再研究研究😀。当然Lua作为一们小巧、易用的脚本语言,还可以嵌入各种程序中,如果你想要知道更多Lua的功能,欢迎去Lua的官方文档查看😁。
这里特别感谢一个Ngzhio老哥帮我解决了困惑的require模块问题👍。
参考资料:
Lua的官方文档
Lua菜鸟教程
Lua require的使用