美文网首页
LuatOS的入门笔记

LuatOS的入门笔记

作者: 肥得流油 | 来源:发表于2023-04-05 15:09 被阅读0次

    lua 简介

    LuatOS是一款针对嵌入式的脚本运行框架,可以极大提升开发效率。
    使用Lua 5.3作为主要语言,针对资源较少的嵌入式环境进行了优化,极大提升了运行效率。
    Powerful embedded Lua Engine for IoT devices, with many components and low memory requirements (16K RAM, 128K Flash) 参考手册

    lua基本语法学习

    在lua语法中变量有:nil、boolean、number、string、userdata、function、thread、table
    变量类型基本上从命名方式就能判断一二,需要注意的是
    1.在lua中0,不代表false。nil代表fale。
    2.table表中,下标初始值是1,而不是0.
    3.function 函数也可以作为一个变量进行传递 ,比如在table中 table1= {function(a,b) return a+b end}

    以下学习代码,可以使用lua模拟器运行

    PROJECT="全名名称"
    VERSION="0.0.1"
    
    -- 引入依赖
    sys=require"sys"
    -- 输出控制台内容
    print("hello lua")
    --赋值
    a=1
    b=2
    print("赋值操作 ",a,b)
    --多重赋值
    c,d=3,4
    print("多重赋值",c,d)
    -- sys.timerLoopStart(print, 1000, "test")
    --nil
    --print(x)
    
    -- number 类型 ,lua只有number一种数字  类型,包含了浮点,整数等等
    number1=1
    number2=0x11
    number3=2e3
    print("整数",number1)
    print("十六进制",number2)
    print("科学计数法",number3)
    print("次方",2^3)
    print("移动数",2<<3)
    
    -- 字符串
    str1="字符串的创建"
    str2='字符串创建单引号'
    str3="字符串 \n 换行转义"
    str4=[[多行文本
                原封不动
                 输出
    ]]
    str5="拼接".."字符"
    str6="数字转换为字符串"..tostring(number1)
    -- number转换为字符串:转换失败的值为 nil
    str7=101
    number4=tonumber(str7)
    number5=#"获取字符串长度使用#"
    print(str,str2,str,str5,str6,number4,str8)
    print(str4)
    
    -- 函数 
    function fun01(a,b)
        print("我是加法",a+b)
    end
    
    function fun02(a,b)
        result=a-b
        print("我是减法",result)
        return result
    end
    fun01(1,2)
    result=fun02(2,1)
    print("函数的返回值",result)
    
    -- 函数也可以返回多个值
    function fun03(a,b)
        print("函数同时执行加法和减法")
        return a+b,a-b
    end
    local out1,out2= fun03(2,2)
    print(out1,out2)
    
    -- table:数字下标,字符串下标
    -- 1.数字下标方式的数组
    local arr1={1,"元素可以为字符串",{"可以是另一个数组"},fun01}
    print("获取数组的值 下标是从1 开始的:",arr1[3][1])
    arr1[5]="在制定位置修改或者新增一个值"
    print(arr1[5])
    table.insert(arr1, "在尾部新增的值")
    print("新增一个值:",arr1[6])
    table.insert(arr1, 2,"在指定位置新增的值")
    print(arr1[2])
    tableRemoveObj=table.remove(arr1,2)
    print("移除指定位置的元素",tableRemoveObj)
    print("统计一个table中有多少个元素",#arr1)
    -- 2.字符串下标方式的table数组【类似于java的map】
    arr2={
        a=1,
        b="2",
        c=fun03,
        ["123"]=123
    }
    print("下标为字符串的table输出值:",arr2.a)
    print("使用table中的函数",arr2["c"](1,2))
    print("读取table中字符串角标的值",arr2["123"])
    -- 为数组赋值
    arr2["1234"]="为角标1234数组赋值"
    print("为数组赋值",arr2["1234"])
    -- 全局表G:所有的全局变量的偶在G中,包含所有自己定义的和系统的函数,比如table,table.inster 方法都是
    print("打印全局变量G",_G)
    testG="测试全局变量"
    print(_G["testG"])
    print(_G["table"],_G["table"]["insert"])
    -- 布尔类型:注意点不等符号 ~=
    boolean1=true
    boolean2=false
    print(boolean1,boolean2)
    print(2>1,1<2,1==2,1>=2,1<=2,1~=2)
    print(2>1 and 1<2)
    print("与或非",1 and false,true or false,not false)
    print("lua中只有false和nil 代表 假,其他的值包括0都为true",false,true and nil)
    print("与或非不只是能返回true和false,可以返回其他值,可以使用and or实现短路求值"
    ,1>20 and "1<20" or "1>20")
    
    -- if判断语句 if then end
    print("if判断语句:使用方式 if 条件  then  end ")
    if(nil) then
        print("0在lua中 是真")
    elseif 1>10
    then
    print("条件 elseif ")
    else
        print("条件else")
    end
    
    -- 循环操作
      print("for循环: i初始值,结束值,步长")
    for i=1,10,1 do
        print(i)
        if(i==3) then break end
    end
    print("倒叙循环")
    for i=3,1,-1 do
        print(i)
    end
    
    print("while 循环")
    
    local w = 10
    while w>5 do
        print(w)
        -- lua不支持--,++等操作
        w=w-1
    end
    
    -- 字符串补充
    print("使用string.char 可以将ascii码转换为字符串")
    local str9=string.char(0x30,0x31,0x32,0x33)
    print(str9)
    print("使用string.byte可以取出字符串中的某一个")
    local byte1=string.byte(str9,2)
    print(byte1,string.char(byte1))
    
    
    -- 迭代器
    print("lua迭代可以 使用for、 for iparis、for pairs")
    local table2={1,2,3,4,5}
    
    
    
    sys.run()
    

    相关文章

      网友评论

          本文标题:LuatOS的入门笔记

          本文链接:https://www.haomeiwen.com/subject/dageddtx.html