***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************
到北京,慢慢步入正轨了,恢复博文更新~
之前相关文章
工具:sublime text2
第一篇:lua学习01(关于一些基本类型、function、table)
本篇博文内容:
> lua 的 表达式
> lua 的 语句
1. lua 的 表达式
- - - 算数操作符
基本的 +、-、*、/
还有 ^(次幂)、%(取余)
比如: 8^(-1/3) 就是 8 开三次方的倒数 就是 0.5
然后,就是 关于小数, x%1 代表 取x的小数部分,
同理 x%0.1 代表 取 x小数部分(除第一位)——这有啥用呢?——这个可以用来精确小数,x-x%0.1 就可以精确到小数点后一位
- - - 逻辑运算符
最基本的 >、<、==、<=、>=,不等于 是这样的 ~=
① 对于不同类型的值,它们在做相等性测试的时候是false,
② 而且 nil 只有与 nil比较才是 true,
③ 在比较 字符串类型 的数据尤要小心,你会发现 "2"<"15" 是 false的
④ 非常重要的一点,引用,比如下面这样
local a = {} a.x = 3 ; a.y = 4 local b = {} b.x = 3 ; b.y = 4 local c = a if a == b then print("a == b") else print("a ~= b") end if a == c then print("a == c") else print("a ~= c") end -- 输出 a ~= b a == c
lua的比较是引用比较,只有它们引用同一个对象时,才会判断相等,否则就是不相等。
- - - 逻辑操作符
基本的 and、or、not
① 只将 nil 和 false 视为假
② and、or 做 "短路求值",就是在第一个已经判断出结果时,就不会去求第二个表达式。
- - - 操作符的优先级 与 结合性
由高到低:
^ |
not # -(负) |
* / % |
+ -(减) |
..(字符串连接符) |
< <= > >= == ~= |
and |
or |
2. lua 的 语句
- - - 赋值
在lua中,赋值语句也是很方便的,最平常那种就不多说了(也没什么说的)
lua支持多重赋值: a,b,c = 1,2,3
当然,如果左面变量多了,靠后的那些没有对应赋值的就为nil;如果右面数多了,比左面多余的部分舍弃掉。
而且,在lua中交换两个变量值很简单—— x,y = y,x
- - - 控制结构
基本的 if-else、while、for、repeat
- - if-else
形式:
if ... then --body else --body end
if ... then --body elseif ... then --body else --body end
还有,lua中不支持 switch 语句,所以 if-elseif-else 会很常见,
其实,我感觉用table来代替switch比if-elseif-else好很多
-- method1 function animalVoice1( ani ) if ani=="dog" then print("wang") elseif ani=="cat" then print("miao") elseif ani=="wolf" then print("woo~~") elseif ani=="sheep" then print("mie") else print("Sorry,I've never heard that voice!") end end -- method2 local voicePackage = { { name = "dog", voice = "wang", }, { name = "cat", voice = "miao", }, { name = "wolf", voice = "woo~~", }, { name = "sheep", voice = "mie", }, } function animalVoice2( ani ) for k,v in pairs(voicePackage) do if v.name == ani then print(v.voice) return end end print("Sorry,I've never heard that voice!") end -- test animalVoice1("cat") animalVoice2("cat") animalVoice1("cow") animalVoice2("cow") -- 输出 miao miao Sorry,I've never heard that voice! Sorry,I've never heard that voice!
- - while
形式:
while ... do -- body end
- - for
for var=exp1,exp2,exp3 do --body end
比如 var=1,10,2 就代表,var=1, var<=10 ,var=var+2(lua中没有 += 这说= =。)
如果不想给exp2设置上限,就写为 math.huge。
for还有一种是迭代器遍历的:
for i,v in pairs(table) do --body end
一般 用 pairs 遍历 表; 用 ipairs 来遍历 数组。
- - repeat
repeat --body until ...
但是与while、for这些不同,它的body中声明的东西,作用域包括了条件判断处。
比如,你在body声明一个 x,可以在 ... 中用x来限制循环次数。
***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************