编辑: 鱼饵虫 | 2019-07-06 |
12 PI = 3.1415962 变数 (Variable) 内容可以透过设置成 nil 被清除.这会告知 Lua 的垃圾回收器 (Garbage collector) 去释放被该变数占用的记忆体. myNumber = nil 变数 (Variables)
12 运算子 (Operators) Lua 支援数学与逻辑运算子(operators),如下: + ― 加法(addition) - ― 减法(subtraction) * ― 乘法(multiplication) / ― 除法(division) ^ ― 次方(power) % ― 取余数(modulus) .. ― 组合两个字串(concatenate) == ― 等於(equal to) ~= ― 不等於(not equal to) <
― 小於(less than) ― 大於(greater than) >
= ― 大於或等於(greater than or equal to) and ― 用连接两个操作以作逻辑运算,当两者皆为真,整体才为真 or ― 用连接两个操作以作逻辑运算,只要其中一者为真,整体为真 not ― 反转值,大部份的情况是布林(Boolean)值, i.e. not true = false, not false = true, not nil = True 运算子 (Operators)
13 流程控制 (Flow control) 有些时候你希望程式码在满足某些条件下才可以执行,或是你想反覆的执行某一段 程式码.这样的行为称之为流程控制 (Flow control).有五个主要的方式可以让你改 变程式的流程. if C then C else statements while loops repeat loops for loops function 流程控制 (Flow control)
14 if - then - else if - then - else 描述让你的程式码藉由对逻辑条件的操作,而有条件地被 执行: myNumber =
12 if myNumber >
10 then print( Number is greater than
10 ) else print( Number is less than or equal to
10 ) end 在这个例子里,myNumber 为 12,它大於 10,所以 if 内的条件为真,且在其中的 程式码被执行.反之如果 myNumber 为 5,大於
10 的条件不成立,则会执行 else 区块内的程式码.注意 if 描述都必须以关键字 end 做结尾. if 描述不一定需要 else 搭配: if myNumber >
10 then print( Number is greater than
10 ) end 但可以搭配 elseif 做多条件的判断: if myNumber >
10 then print( Number is greater than
10 ) elseif myNumber <
10 then print( Number is less than
10 ) else print( Number is exactly
10 ) end 你也可以透过连接多个条件,组合成更复杂逻辑内容: if - then - else
15 if myNumber >
10 and myNumber <
20 then print( myNumber is in range ) end 为了让 print() 被执行,and 所连接的两个条件都必须为真.在 Lua 中,你不 需要在 if 内特别加上括号,除非你希望改变判断的优先顺序. 让我们看看下面这段程式码: myNumber =
12 if myNumber <
10 or myNumber >
20 then print( myNumber is out of range ) end or 连接的其中一个条件只要为真,则 print() 会被执行.在上面的例子中, 由於 myNumber 为 12,落在
10 ~
20 之间,所以不会透过 print() 输出任何 字串. 和其他程式语言不同的是,只要Lua 一旦发现整体条件的真假之后,就不会去判断 剩余的条件. if player and player.x <
0 then print( player is off screen ) end 在这个例子里,如果 player 不存在 (其值为 false 或 nil ),不管剩余的条 件是什麽,整体条件一定为假,剩余的条件显得无关紧要,也因此不会被检查. if - then - else
16 回圈 (Loop) 你可以在以下三种回圈形式中,选择其中一种,让一段程式码区块重复被执行. while 会在执行前先测试执行条件,如果执行条件为 false ,则会中断,反之 若执行条件为 true 则继续执行: myNumber =