zoukankan      html  css  js  c++  java
  • lua语法介绍(二)

    一.语法简要  

      在学习任何语法之前,我们都需要知道该门语言是怎样定义的,是怎样运行的,话说白了,就是到了人家的山头得唱人家山头的歌。下面介绍lua的语法

      1.变量的定义

        特点:

          1.变量在使用前必须声明,给一个变量赋值后即创建了这个变量

          2.删除一个变量只需将其变量赋值为nil 即可

          3.访问一个没有被初始化的变量不会出错,得到的结果是nil

    --- 全局变量
    a = 10
    
    --- 局部变量
    
    local b = 20

    --- 应尽可能的使用局部变量,它有2个好处
      -- 1.避免命名冲突
      -- 2.访问局部变量的速度比全局变量更快

      2.数据类型的定义

    --- nil这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。
    b = nil
    print(b)
    
    --- boolean    包含两个值:false和true。
    flag = false;
    print(flag)
    
    --- number    表示双精度类型的实浮点数
    num = 10.0;
    print(num)
    
    --- string字符串由一对双引号或单引号来表示
    str = "hello world";
    print(str)
    --- 用#号来表示字符串的长度
    print("字符串长度" ..#str);
    
    --- 字符串和数字进行算术操作
    print("12" + 12);
    
    --- 字符串之间进行连接
    print("12" .. "12");

      3.table 的定义

        table在lua中是一个关联数组,什么意思呢?其实是在这个数组中设置的有key和value,如果你没设置key,那么key是自增的。

        key的类型可以有:数字,字符串或者是表

        value是你要存入的值

    --- 1.  创建1个空的table
    local tab1 = {};
    print(tab1);
    
    --- 2.直接初始化表
    local tab2 = { "java", "scala", "ruby", "lua" };   
    
    --- 3.遍历tab
    for key, val in pairs(tab2) do
        print(key, val);
    end

    ======= 打印结果

      1 java
      2 scala
      3 ruby
      4 lua

      4.语法

        1.if 判断语句

    --- Lua if 判断语句
        -- if 语句
        -- if ... else 语句
        -- if 嵌套语句

    a = 10; if a == 10 then print("if 语句 a 的值为:",a) end
    if a < 10 then print("a 小于10 的值为:",a) else print("a 大于10 的值为:",a) end
    if a > 5 then if a < 10 then print("a的值是大于5 小于10") end else if a < 8 then print("a的值是大于5 小于8") end end

      2.循环语句

    --- Lua 循环
        -- while 循环
        -- for 循环
        -- repeat..until
        -- 循环嵌套循环
    
    while(true) do
        print("while 的循环语句")
    end
    
    for i = 1, 10 do
        print("i 的值为:",i)
    end
    
    a = 10;
    repeat
        print("a 的值为:",a)
        a = a + 1;
    until(a > 15)
    --- 注意循环条件判断语句(condition)在循环体末尾部分,所以在条件进行判断前循环体都会执行一次, --- 如果条件判断语句(condition)为 false,循环会重新开始执行,直到条件判断语句(condition)为 true 才会停止执行 for i= 1,3 do for j = 1,3 do print(i,j) end end

      5.函数

        lua中的函数有 2种用途:

          1.完成指定任务。这种情况下函数作为调用语句使用

          2.计算并返回值。这种情况函数作为赋值语句的表达式使用

    -- 例:完成指定的功能
    function max(num1,num2)
        if(num1 > num2) then
            result = num1
        else
            result = num2;
        end
        return result;
    end
    
    print("两个数中的最大值是:",max(10,4));
    
    -- 例:将返回值返回
    myParameter = function(param)
        print("这是打印函数:",param)
    end
    
    function add(num1,num2,fun)
        result = num1 + num2;
        fun(result);
    end
    
    print("函数传参调用 ======================================")
    myParameter(10);
    add(2,5,myParameter);

    --- 调用add函数,第1、2个参数为数字,第三个为函数,先将add函数中传入的第1、2个参数计算的结果传入到第3个函数中,作为参数调用第3个参数函数

      6.函数的多返回值情况和参数中可变参数情况

    -- 函数的多返回值
    function maxValueAndIndex(tab)
        local maxIndex = 1;                -- 最大值索引
        local maxValue = tab[maxIndex]     -- 最大值
        for i,val in pairs(tab) do
            if val > maxValue then
                maxIndex = i;
                maxValue = val;
            end
        end
        return maxIndex,maxValue;
    end
    tab={1,3,10,9,8}
    print(maxValueAndIndex(tab));   -- 3  10
    
    --- 可变参数
    
    function add(...)
        local s = 0 ;
        for i,v in pairs{...}do
            s = s + v;
        end
        return s
    end
    
    print(add(3,7,8,9,10));
    
    -- 求可变参数中参数的个数
    function average1(...)
        result = 0
        local arg = {...}
        for i, v in ipairs(arg) do
            result = result + v
        end
        print("传入的参数个数是:"..#arg);
        return result/#arg
    end
    print("平均值是:",average1(3,7,8,9,10))
    
    -- 也可以通过"select#" 来获取可变参数的个数
    function average2(...)
        result = 0
        local arg = {...}
        for i, v in ipairs(arg) do
            result = result + v
        end
        print("传入的参数个数是:"..select("#",...));
    
        return result/select("#",...)
    end
    print("平均值是:",average2(1,3,5,6,9,10));

    二.数学运算符

      1.算术运算符

    local a = 10;
    local b = 20;
    print("=========== 数学运算符 ===================")
    print("a + b =",a + b );
    print("a - b =",a - b );
    print("a * b =",a * b );
    print("a / b =",a / b );
    print("a % b =",a % b );
    print("a ^ b =",a ^ b );
    print("- b =",-b );
    
    if (a > b)then
        print("a 的值大于b")
        else if(a == b)then
            print("a 的值 == b")
            else if a< b then
                print("a 的值小于b")
                else if( a~= b)then
                        print("a 的值不等于b")
                    end
            end
        end
    end

      2.逻辑运算符

    local a = true;
    local b = false;
    --- lua 逻辑运算符   and   or   not
    ---   a      and      b      result
     --  true    and     true    true
     --  true    and     false   false
     --  false   and     true    false
     --  false   and     false   false
    
    --if a then
    --    return print(false and false);
    --end
    
    print("====== or ===========");
    --- a       or      b       result
    --- true    or      true    true
    --- false   or      true    true
    --- true    or      false   true
    --- false   or      false   false
    --
    --if true then
    --    return print(false or false)
    --end
    
    print("====== not ===========");
    
    --if true then
    --    return print("false not:",not false)
    --end

      3.其它操作符

    --- lua 其它操作符
        -- .. 连接2个字符串
        -- #  一元运算符,返回字符串的长度或表的长度
    a = "hello"
    b = "world"
    
    print("连接2个字符串:",a..b);
    print("字符串b的长度是:",#b);
  • 相关阅读:
    ES6常用语法
    nodejs中exports与module.exports的区别
    CSS animation动画
    CSS user-select文本是否可复制
    VUE 滚动插件(better-scroll)
    VUE 父组件与子组件交互
    CSS div内文字显示两行,超出部分省略号显示
    linux下使用tar命令
    linux fdisk命令使用
    关于SUID、SGID、Sticky
  • 原文地址:https://www.cnblogs.com/MrRightZhao/p/11283447.html
Copyright © 2011-2022 走看看