Lua 基本语法学习笔记(一)

Lua 基本语法学习笔记(一)

数据类型

Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。

www.zeeklog.com  - Lua 基本语法学习笔记(一)
--print("hello world");单行注释
--[[
print("df "); 多行注释
]]--
--声明一个变量他可以是任意类型的变量
a=nil;
print(a);
a=1;
print(a);
a='123';
a="123";--string类型可以用单引号也可以用双引号
print(a);
a=true
print(a)
--通过type函数可以得到数据类型,type函数返回一个string
print(type(a));
print(type(type(a)));
--使用没有声明的变量是nil类型
print(b);

变量

变量在使用前,需要在代码中进行声明,即创建该变量。

编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值。

Lua 变量有三种类型:全局变量、局部变量、表中的域。

Lua 中的变量全是全局变量,哪怕是语句块或是函数里,除非用 local 显式声明为局部变量。

局部变量的作用域为从声明位置开始到所在语句块结束。

变量的默认值均为 nil。

a = 5               -- 全局变量
local b = 5         -- 局部变量

function SetNumber()
    c = 5           -- 全局变量
    local d = 6     -- 局部变量
end

SetNumber()
print(c,d)          --> 5 nil

do
    local a = 6     -- 局部变量
    b = 6           -- 对局部变量重新赋值
    print(a,b);     --> 6 6
end

print(a,b)      --> 5 6

字符串的常用操作

str="hello world";
str1="汉字";
num=8;
print(#str);
print(#str1);--汉字占三个字节
print(str,str1..num);
--字符串拼接
print("dui".."77");
--[[
%d:和数字拼接
%a:和任何字符拼接
%s:和字符拼接
]]
print(string.format( "asdf%dsdf",8))
--其他类型转字符串类型
a=true;
print(tostring(a));
--小写转大写
str="sdddklf"
print(string.upper(str));
--大写转小写
print(string.lower(str));
--字符串的反转
print(string.reverse(str));
--字符串的查找记录了他起点位置和结束的位置(lua的索引是从1开始)
print(string.find(str,"sd"));
--字符串的截取
print(string.sub(str,1,5));
--字符串的拷贝
print(string.rep(str,2));
--字符串的替换
print(string.gsub(str,"s","*"));
--字符和asscii码相互转换
print(string.byte(str,2));
print(string.char(100));

运算符

print("=======算数运算符========");
a=12;
b=9;
print(a+b);
--字符串如果能转成number就会计算
print("5"+7);
print(10-5);
print(7*6);
print(10/5);
print(6%4);
print(2^2);

print("=======条件运算符========");

--<   >   <=   >=   ==   ~=

print("=======逻辑运算符========");

-- and 与   or或   not true就是false

条件分支语句

a = 10;
if a > 5 then
    print("是的");
end



if a < 5 then
    print("是的");
else
    print("不是")
end



if a < 5 then
    print("小");
elseif a == 5 then
    print("=");
elseif a > 5 then
    print("大");
end

循环

print("======while======");
num = 0;
while num < 5 do
    print(num);
    num = num + 1;
end

print("======do while======");
-- [ 变量定义 --]
a = 10
-- [ 执行循环 --]
repeat
    print("a的值为:", a)
    a = a + 1
until (a > 15)

print("======for======");
for i = 1, 5 do -- i默认+1
    print(i);
end

for j = 1, 5, 2 do
    print(j);
end

for n = 1, -5, -1 do
    if n == -2 then
        break--终止循环
    end

    print(n);
end
print("======goto======");
local x = 1
::label:: print("--- goto label ---"..x)

    x = x+1
if x < 5 then
    goto label   -- 小于 5的时候跳转到标签 label
end