0
点赞
收藏
分享

微信扫一扫

lua学习记录|CSDN创造打卡

凉夜lrs 2022-02-02 阅读 85

文章目录

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

在这里插入图片描述

举报

相关推荐

0 条评论