小白学习之(Lua(02))

来源:互联网 发布:提高php水平 编辑:程序博客网 时间:2024/06/11 10:54

--第二章:

类与值

--Lua中有八中基本类型
--nil(空)
--boolean(布尔)
--number(数字)
--string(字符串)
--function(函数)
--userdata(自定义类型)
--thread(线程)
--table(表)
--type(变量):总是返回字符串


--变量没有预定义类型,任何变量都可以包含任意类型的值
--例子:
print(type(a)); -- output --> nil
a = 10;
print(type(a)); -- output --> 10
a = "10";
print(type(a)); -- output --> string
a = false;
print(type(a)); -- output --> boolean
--这是合法的在Lua中函数是作为”第一类值“来看待可以像操作其他值一样来操作他
a = print;
print(type(a));  -- output --> function


--string
--Lua的字符串是不可变的值,而是根据修改来创建一个新的字符串
--例子:
a = "one string";
b = a.gsub(a, "one", "tow");
print(a); -- output --> "one string"
print(b); -- output --> "tow string"


--字面字符串需要用一对双引号或者单引号来界定
a = "one"
print(a); -- output --> "one"
b = 'one'
print(b); -- output --> "one"


--在一个字符串上运用算数操作符时Lua会尝试将一个字符串转化为数字
--Lua也会尝试将数字转为字符串
--例子:
--".."是字符串操作符使用来连接2个字符串 前后必须用空格分开
print(10 .. 20); --output 1020


--如果将字符串转化为数字请使用 tonumber(); 当无法正常转换时返回nil (在C和C++中是 atoi();)
--如果将数字转化为字符串请使用 tostring(); 当无法正常转换时返回nil (在C和C++中是 itoa();)


--Lua5.1中,在字符串前面加上“#”,可以返回字符串的长度
--例子:
a = "hello";
print(#a); -- output --> 5
print(#"good\0bye"); -- output -->8 (\0占一个字符位)


--现在看一个Lua极为重要也是仅有的一个数据类型table(表)
--table在Lua中不是值也不是变量,而是对象
--创建表(通过构造表达式建立)
a = {}; --创建一个表并将他的引用存储在a中
k = "1";
a[k] = 10; -- key = 1, value = 10
--table永远是匿名的
--Lua的for循环(包括5,步长为1)
for i = 1, 5, 1 
    do 
        a[i] = i * 2;
        print(a[i]); 
    end;
--可以将nil赋给table的某个元素表示删除某个元素
--语法糖:b.y 和 b["y"]一样(很怪异的语法,b打点是调不出y的,只能调出x但是却可以用)    
b = {};
x = "y";
y = "yy";
b[x] = 100;
b[y] = 1000;
print(b["y"]);
print(b.y);
print(b.yy);


--Lua中数组通常以1为索引的初始值
for i = 1, #a, 1
    do
        print(a[i]);
    end


--function
--Lua中函数作为第一类值,这表明函数可以存储在变量中,可用通过参数的形式传递给其他函数
-- 还可以作为其他函数的返回值
0 0