Lua 基本语法学习笔记(一)
数据类型
Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。
--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