文章目录
1、vscode配置lua开发环境
- 官网下载 http://www.lua.org/home.html
点击这个进入下载(可以看到他说是如果你使用win就用这种的方式),但是我打不开,不知道为啥
后面看了其他博主的文章,可以选择直接去github下载: https://github.com/LuaDist/Binaries
就这个了,看起来确实比较古老,不过好像都是这个,下载完解压,里面有四个文件夹
进入bin目录并复制当前路径,将路径添加到用户变量和系统变量中去
下面是用户变量的path路径
下面是系统变量的path路径
打印版本号测试是否安装成功,打开cmd进行打印即可
在vscode安装运行脚本需要的工具
安装之后关闭vscode重启,这里我实测需要重启,不然还是会报错!!!
打印成功,ok安装完成
如果不使用vscode进行开发,也可以使用浏览器进行,链接如下:
https://wiki.luatos.com/pages/emulator.html
打开页面如下,上面是运行和停止的窗口,下面是打印的输出窗口,效果如下
然后lua学习的话,推荐看这个视频,我下面的记录基本是按照视频的记录来的,我自己跑了一遍
https://www.bilibili.com/video/BV1vf4y1L7Rb
30分钟,实测需要一小时
2、基本语法
注释
使用 – 进行注释,就是两个横杠
-- print("hello world") 注释
变量,主要是分为私有变量和全局变量
a = 1 -- 默认是全局变量
b = 2
local a = 3 -- 当前文件的私有变量
打印不存在的变量不会报错,很多地方打印没有的都是这样的,返回nil,且在lua里面认为nil为逻辑假
print(c) -- 没有的变量就是nil
支持多个变量一起赋值,这个赋值有点像python
-- a = b = c = 1 -- 这样赋值不行
a,b,c = 1,2,1
print(a,b,c) -- 这样是ok的,类似py
变量同样支持十六进制和科学计数法
-- 之后是16进制
a = 0x11
-- -- 科学计数法
b = 2e10
print(a,b)
关于数据类型,lua里面不支持各种各样的数值类型,整形浮点什么的统称为number类型
变量计算,基本和其他语言一样都支持
a = 0x11
-- 科学计数法
b = 2e10
print(a+b) -- 加法运算
print(a*b)
print(a/b)
print(a-b)
print(10^5) -- 幂运算
3、字符串
字符串定义也和python一样,直接定义即可,同样支持转义字符,字符串连接采用两个点的方式
a = "fdsfa\nsffds" -- 支持转义字符
b = "fafsaf"
print(a)
print(a..b) -- 字符串连接
使用不同行的格式字符串,需要用两个中括号
c = [[
fvgsgsd
gsdagas
gsdg\nsffds
]]
print(c) -- 将不同行字符输出
字符串数字相互转换
-- 字符串数字转换
c = tostring(10) --数值转为字符串
n = tonumber("10") --反向
print(c)
print(n)
使用 # 获取字符串的长度
a = "dfgfgsgfg"
print(#a) -- 获取字符串的长度
4、函数
使用function来创建函数,感觉和matlab有点像,这个lua和python这种语言的区别我感觉比较明显的在于它不依赖这个所以,都是一段段的以end来结尾。
函数的标准格式如下
function function_name( ... ) -- 新建的一个最基本的函数,函数,函数名,函数参数
-- body
end
下面来创建一个函数试试
function f( a,b,c ) -- 使用函数
return a,b
-- body
end
local i,j = f(1,2)
print(i,j)
5、table(数组)
可以看到内部的元素可以是数字,字符,函数什么的,使用【】进行索引来获取元素的值,可以进行元素的增删
a = {1,"ac",{},function()end} -- 可以存的东西多种多样
print(a[1],a[2]) --使用索引打印元素,如果没有这个索引,就nul
-- 但是可以添加,这个是没限制的
a[5] = 123
print(a[5])
print(#a) --d打印长度
插入和删除元素
-- 使用内置函数
a = {1,"ac",{},function()end}
table.insert(a,2,"d") -- 插入元素
table.remove(a,2,"d") -- 删除元素,同时这个可以作为一个返回值被返回去
其他索引元素的方法
a = {
a = 1,
b = "1234",
c = function()
end,
d = 123123,
[",;"] = 123
}
print(a["a"]) -- 打印下标对应的值
print(a.b) -- 另一种方式索引
print(a.a)
print(a[",;"]) -- 打印奇特命名下标
a["abc"] = "afsaf"
print(a["abc"])
全局表,可以理解为一个内存,就是定义的元素都是他的,因此都可以使用全局表来索引,名字是_G[]
a = 10
print(_G["a"]) --a在g;里面
可以看到打印没有报错,ok的!!!
6、逻辑值
支持很多种逻辑值的表达形式,注意0是真的不是假的,在最后一句做了表达
a = true
b = false
print(1>2)
print(1<2)
print(1>=2)
print(1<=2)
print(1==2)
print(1~=2)
print(a and b)
print(a or b)
print(not b)
a = nil -- 假
b = 0 --真
print(a==true)
if b then
print("b is true")
end
使用逻辑值实现类型三项表达式的效果
b = 0
print(b>10 and "yes" or "no") -- 实现类似三项表达式的效果
7、选择结构
就是if then else end的效果,原来的结构增加了then和end,因为他都是end来进行一段段的区分的
-- 分支判断语句
if 1>10 then
print("1>10")
elseif 1<10 then
print("1<10")
else
print("no")
end
8、循环结构
-- for循环
for i =1,10,2 do -- 初值,结尾,步长
print(i) -- 再循环内部i值不允许被修改
if i == 5 then -- 可以使用break终止循环
break
end
end
-- while循环
local n = 10
while n>1 do
print(n) -- 同样支持break
n = n-1 -- 循环变量修改在内部
end