《lua程序设计(第二版)》学习笔记(四) ------------ 基本操作
解释都在注释里,你可以新建lua文件,拷贝下面的代码直接在命令行下面就可以运行,本人是用sublime运行的
-- 第4章 语句 -- 赋值, 局部变量与块, 控制结构 break与return -- 4.1 赋值: 修改一个变量或者一个table中字段的值 a = 0; a = 1; -- 赋值也,变换值也 -- 多重赋值(多重返回稍后讲解) a, b = 2, 3; print(a, b); a, b, c = 2, 3; --- 值不足补nil print(a, b, c); -- 2, 3, nil a, c = 2, 3, 4 -- 值多余舍弃 print(a, b, c); -- 2, 3, 3 function rValue() return 1, 2, 3 end a, b = rValue(); print(a, b, c); -- 1, 2, 3 -- 多重赋值,多重返回值就这么讲完鸟 -- 4.2 局部变量与块(block) -- 我们前面用到的都是 全局变量 ,应该尽量少用全局变量 local i = 100; -- 局部变量,我们尝试在下面打印它,看看是否可行 print(i); -- 打印100,表示可行,当我们用dofile "filename"加载编译此代码文件后, -- 进入交互模式,局部变量不再存在, 全局行数存在,除非我们推出交互或者重新编译此代码文件 -- 我们可以在交互模式(或者其他代码文件)调用此代码文件的全局变量或者全局行数 -- 这里有点啰嗦,其实道理很简单,跳 -- 交互模式下(命令行)使用local 定义变量 -- lua将它当作一个程序看(chunk)来处理,会马上执行这个定义,下一行时这个local变量已经超过程序块的 -- 定义范围,自然失去作用,有别于代码文件 -- 我们可以现实调用do-end来定义一个程序块,由此来限定local的使用返回 -- 不行你在交互模式写下如此代码 local i = 0; print(i); -- 同上在这里打印0, 在交互模式上面打印nil do local i = 0; print(i) end -- 太无聊的时候就拼命解释, 在跳 -- 4.3 控制结构 -- 4.3.1 if then else local i =1 local j = 2; -- 打印最小值 if i < j then print(i) else print(j) end a = {} for i=1,10 do -- 从一开始 a[i] = i; end -- 4.3.2 while local i = 1;-- 刚刚不小心写成0了,上面式用1开始的,而且这是lua标准,请尽量从1开始 while a[i] do -- print(a[i]); i = i+1; end local i = 1; repeat -- print(a[i]); i = i + 1; until a[i] == nil -- 泛型for循环 for i,v in ipairs(a) do -- print(i,v) end -- 再连连for循环 local days = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thuresday", "Friday", "Saturday", ["one"] = "ONE", ["two"] = "TWO" } for k,v in pairs(days) do -- print(k,v) end -- ipairs 和 pairs有什么区别呢? -- 注意到["one"] = "ONE", ["two"] = "TWO"了吗,用pairs可以答应到,用ipairs就不行了 -- 4.4 break 与 return -- 用于跳出当前的块和c/c++一样,不赘述 -- 只能放在程序块的最后一句 local i = 1; while a[i] do if i == 3 then break end print(a[i]); -- i = i + 1; end