• 快速体验,学习lua(一种可嵌入c++,c#,android,object-c等并进行互调支持热更新的脚本)的入门调试系列(1)


    --这里是注释
    --[[
    功能备注:lua快速体验,学习,了解语法
    创建时间:2020-6-12
    创建人:pcw
    --]]
    --【数据类型与输出】
    print("--------------------------------");
    print("configlab")
    print(b);--输出:nil
    print(type(b));--输出:nil
    print((type(b)=="nil")) --输出:true
    b=23.5
    print(b);
    print(type(b));--输出:number
    print("--------------------------------");
    print([[
      你好
      lua是一个神奇的东西,可以嵌入到很多语言
    ]]);--这是格式化字符串
    print("config的长度="..#"config");
    print("--------------------------------");
    --【变量】
    p1=2;--全局变
    local p2=2;--全局变量
    function testparam()
        p3=2;
        local p4=3;
    end
    testparam();
    print(p1,p2,p3,p4);--输出多个值
    if(true) then
       local p1=3;--局部变量,不影响全局变量
       p2=3;--全局变量
    end
    print(p1,p2);
    print("--------------------------------");
    --【赋值】
    pr1,pr2=20,"abc"; --可以同时赋值,但是类型不一样
    print(pr1,pr2);
    print(type(pr1),type(pr2));
    print("--------------------------------");
    --【特殊的值】
    if(0) then
       print("if中0代表true");
    end
    if(nil) then
       print("if中nil代表true");
    else
       print("if中nil代表false");
    end
    print("--------------------------------");
    --【table表】
    table1={username="user798",group="2年级"}
    print(type(table1));
    for k1,v1 in pairs(table1)  do
      print(k1.."-"..v1);
     end;
     print("--------------------------------");
    --【local 创建table】
    local table2={};
    table2["k2"]="v2";
    k3=10;
    table2[k3]=20;
    table2[k3]=table2[k3]+20;
    for k2,v2 in pairs(table2) do
       print (k2.."-"..v2);
    end;
    print("--------------------------------");
    --【local 创建非键值对的table 】 (lua中数组索引从1开始,而不是从0开始)
    local table3={"中国","美国","德国"};
    for k3,v3 in pairs(table3) do
      print (k3.."-"..v3);
    end;
    print("--------------------------------");
    --【函数】
    function  getSqure(n,IsSorV)
       if(IsSorV==true) then
          return n*n;
       else
           return n*n*n
       end
    end;
    print("s="..getSqure(3,true));
    print("v="..getSqure(3,false));
    print("--------------------------------");
    --【匿名函数】(涉及參數字符串相加的,必須保證函數有return返回,否则会报错)
    function dynamicProcess(n,IsSorV,inputFun)
        return inputFun(n,IsSorV)
    end
    
    print("匿名函数计算s="..dynamicProcess(4,true,
    function(n,IsSorV)
      if(IsSorV==true) then
          return n*n;
       else
           return n*n*n
       end
    end
    ));--输出:匿名函数计算s=16
    print("--------------------------------");
    --【函数返回多个值】
    print("开始体验函数返回多个值");
    s_begin,s_end=string.find("http://www.cnblogs.com/taohuadaozhu",":");
    print(s_begin,s_end);
    s_begin,s_end=string.find("http://www.cnblogs.com/taohuadaozhu","taohuadaozhu");
    print(s_begin,s_end);
    print("--------------------------------");
    --【可变参数】
    function average(...)
      local args={...};
      local result=0;
      for i,v in ipairs(args) do
         result=result+v;
       end
       return result/#args;--#args代表数组的元素的个数
    end
    
    
    print("可变参数average(1,2,3)="..average(1,2,3));
    print("--------------------------------");
    --【for循环】
    
    function fortest(...)
       for iIndex3=1,select("#",...) do   --数组索引必须从1开始,否则会抛异常
          local arg=select(iIndex3,...);
          print("for循环test="..arg);
       end
    end
    
    fortest(3,6,9,12);
    print("--------------------------------");
    --【不等于】
    if(1~=2) then
      print("1!=2的表达式是1~=2");
    end
    
    print("--------------------------------");
    --【逻辑运算】
    bool1=true;
    bool2=false;
    if(bool1 or bool2) then
        print("bool1 or bool2 是符合if的");
    end
    if(bool1 and bool2) then
        print("bool1 and bool2 是符合if的");
        else
          print("bool1 and bool2   不符合if的");
        end
    
    
    if(not bool2) then
        print("not bool2   符合if的");
    end
    
    print("--------------------------------");
    --【while循环】
    i1=0;
    while(i1<5) do
      print(""..i1.."次输出");
      i1=i1+1;--不支持i1++这种写法.
    end;
    print("--------------------------------");
    --【循环中没有continue,但等效的方法】(repeat  until true, 重复执行知道条件为真).
    i2=0;
    while(i2<3) do
      print("当前i2="..i2..",loop.begin");
      repeat
         if i2%2==0 then
             print("当前i2="..i2..",遇到4的倍数都不往下走,类似continue的效果");
             i2=i2+1;--不支持i2++这种写法
             break
         else
           print("当前i2="..i2..",loop.end");
            i2=i2+1;--不支持i2++这种写法
         end
    
      until true
    end
    print("--------------------------------");
    --[[ 模拟continue的输出:
    当前i2=0,loop.begin
    当前i2=0,遇到4的倍数都不往下走,类似continue的效果
    当前i2=1,loop.begin
    当前i2=1,loop.end
    当前i2=2,loop.begin
    当前i2=2,遇到4的倍数都不往下走,类似continue的效果
    ]]
    print("--------------------------------");
    --【常用函数】
    date = 2; month = 1; year = 2020
    print(string.format("日期格式化 %02d/%02d/%03d", date, month, year))
    --线程(thread)可同时运行多个线程,协程(coroutine)  同一时间只能运行一个,挂起时才停止
    --userdata(自定义类型):用户自己在c,c++中定义的指针或结构体类型存储到userdata


    下面是結果:

    configlab

    nil

    nil

    true

    23.5

    number

    --------------------------------

      你好

      lua是一个神奇的东西,可以嵌入到很多语言

    config的长度=6

    --------------------------------

    222nil

    23

    --------------------------------

    20abc

    numberstring

    --------------------------------

    if中0代表true

    if中nil代表false

    --------------------------------

    table

    username-user798

    group-2年级

    --------------------------------

    10-40

    k2-v2

    --------------------------------

    1-中国

    2-美国

    3-德国

    --------------------------------

    s=9

    v=27

    --------------------------------

    匿名函数计算s=16

    --------------------------------

    开始体验函数返回多个值

    55

    2435

    --------------------------------

    可变参数average(1,2,3)=2

    --------------------------------

    for循环test=3

    for循环test=6

    for循环test=9

    for循环test=12

    --------------------------------

    1!=2的表达式是1~=2

    --------------------------------

    bool1 or bool2 是符合if的

    bool1 and bool2   不符合if的

    not bool2   符合if的

    --------------------------------

    第0次输出

    第1次输出

    第2次输出

    第3次输出

    第4次输出

    --------------------------------

    当前i2=0,loop.begin

    当前i2=0,遇到4的倍数都不往下走,类似continue的效果

    当前i2=1,loop.begin

    当前i2=1,loop.end

    当前i2=2,loop.begin

    当前i2=2,遇到4的倍数都不往下走,类似continue的效果

    --------------------------------

    --------------------------------

    日期格式化 02/01/2020

  • 相关阅读:
    史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
    整合SPRING CLOUD云服务架构
    java虚拟机
    test面板1
    gulp的使用
    拖拽js
    dependencies与devDependencies的区别
    获取随机颜色js
    nodejs创建ejs工程
    css图片垂直居中
  • 原文地址:https://www.cnblogs.com/taohuadaozhu/p/13110693.html
Copyright © 2020-2023  润新知