Lua基础语法

Lua基础语法

数据类型

数据类型描述
nil这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。
boolean包含两个值:false和true。
number表示双精度类型的实浮点数
string字符串由一对双引号或单引号来表示
function由 C 或 Lua 编写的函数
userdata表示任意存储在变量中的C数据结构
thread表示执行的独立线路,用于执行协同程序
tableLua 中的表(table)其实是一个”关联数组”(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过”构造表达式”来完成,最简单构造表达式是{},用来创建一个空表。

Lua变量

a= 13;
function test() --局部函数
    a=15; --全局变量
    local var=6; --局部变量
end

test();--执行函数
print(a);--赋值完毕

print(var); --null获取不到局部变量值

赋值

赋值方式直接赋值就可以无需声明数据类型,

--多变量赋值
a="hello";
b=12;
a,b=a.."\t world" ,b+1;
print(a);
print(b);
--少变量复制
a=a.."Word";
b=b+1;
print(a);
print(b);

索引

a = { 1, 2, 3, 4, 5 };
for i, v in ipairs(a) do
    print(a[v])
end
print("-------------------");
print(a[1])

和java的集合差不多这个是定义一个弹性数组进行遍历

循环

while循环

local a=10;
while (a<20) do
    a=a+1;
    if a == 19 then
        break;
    else
        print(a);
    end
end

for循环

a={1,3,42,1,3,3};

for i, v in ipairs(a) do
    print(a[i]);
end

repeat..until循环

a=10;
repeat
    print(10);
until (a<10)

类似于do..while循环,先执行后循环

流程控制语句

a = 5;
if a == 1 then
    print(a);
else
    if a == 2 then
        a = a + 1;
        print(a);
    else
        a = a + 2;
        print(a);
    end
end

函数

基础函数(比较取出最大值)

function maxNumber(parm1, parm2)
    if parm1 > parm2 then
        return parm1;
    elseif parm1 == parm2 then
        return parm1;
    else
        return parm2;
    end
end
local a = 10;
local b = 20;
print("比较两个数最大值:", maxNumber(a, b));

函数内部引用函数

--形参多态
function GetResults(parm, parm2)
    a = MULTIPLICATION(parm, parm2);
    if a < 18.5 then
        return "体重不足"
    else
        if a > 24 then
            return "体重超重"
        else
            if a > 28 then
                return "体重肥胖"
            end
        end
    end
end
--普通函数(校验是否是标准体重)
function MULTIPLICATION(hight, weight)
    --标准体重
    bmi = hight / weight;
    return bmi;
end
--封装
height = 170;
weight = 60;
--响应
print(GetResults(height, weight))

多返回值

--函数(取出最大值)
function GetTheMaximumValue(a)
    --定义最大值
    local maxIndex = 1;
    --定义初始索引
    local maxValue = a[maxIndex];
    --遍历
    for i, v in ipairs(a) do
        if v > maxValue then
            maxValue = v;
            maxIndex = i;
        end
    end
    return maxValue, maxIndex;
end

--参数
a = { 32, 4, 1, 4, 6, 92, 1 }
--调用
print(GetTheMaximumValue(a))

可变参数

function demo(...)
    --计数器
    count = 0;
    --求和
    sum = 0;
    for i, v in ipairs(...) do
        sum = sum + v;
        count = count + 1;
    end
    --响应
    return sum, sum / count;
end

a = { 1, 2, 3, 4, 5, 6 };
print(demo(a))

和Java的泛型一样

function average(...)

    sum = 0
    local arg = { ... }    --> arg 为一个表,局部变量
    for i, v in ipairs(arg) do
        sum = sum + v
    end
    --响应
    return sum, sum / select("#", ...)
    --return sum, sum / #arg
end

print(average(10, 5, 3, 4, 5, 6))

求和可变参数长度

运算符

算数运算符

操作符描述实例
+加法A + B 输出结果 30
减法A – B 输出结果 -10
*乘法A * B 输出结果 200
/除法B / A 输出结果 2
%取余B % A 输出结果 0
^乘幂A^2 输出结果 100
负号-A 输出结果 -10
//整除运算符(>=lua5.3)5//2 输出结果 2

关系运算符

操作符描述实例
==等于,检测两个值是否相等,相等返回 true,否则返回 false(A == B) 为 false。
~=不等于,检测两个值是否相等,不相等返回 true,否则返回 false(A ~= B) 为 true。
>大于,如果左边的值大于右边的值,返回 true,否则返回 false(A > B) 为 false。
<小于,如果左边的值大于右边的值,返回 false,否则返回 true(A < B) 为 true。
>=大于等于,如果左边的值大于等于右边的值,返回 true,否则返回 false(A >= B) 返回 false。
<=小于等于, 如果左边的值小于等于右边的值,返回 true,否则返回 false(A <= B) 返回 true。

字符串种类繁多暂定

字符串

strings="helloWOrd";

--打印长度

print(string.len(strings))
--转换成大写

print(string.upper(strings))

--转换成小写

print(string.lower(strings))


--查找

print(string.find(strings,"hell"))

--反转

print(string.reverse(strings))

--拷贝

print(string.rep("hello",2))

--匹配

print(string.match(strings,"hello"))

--截取
print(string.sub(strings,string.find(strings,"h"),string.find(strings,"o")))

数组

array = { "hello", "word", "you" }

for i, v in ipairs(array) do
    print(v)
end
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容