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);

 

posted @ 2019-08-01 16:30  硝烟漫过十八岁  阅读(350)  评论(0编辑  收藏  举报