表达式
表达式是条件判断的基础,Lua的表达式同其他语言类似,只是表示方式上有一些变化。其表达式主要分为如下几种
-
算数表达式
二元表达式:
+,-,*,^(指数),%一元表达式:
- -
关系操作符,所有关系运算符的操作结果都是true或false
<、>、<=、>=、==(相等性测试)、~=(不等性测试) -
逻辑操作符,前面介绍过逻辑运算符将
false、nil视为假,其他均为真逻辑运算符主要包括:
and、or、not对于
and第一个操作数为假,则返回第一个操作数,否则返回第二个;or第一个操作数为真,则返回第一个,否则返回第二个,not只返回true或false。基于Lua的逻辑运算特性,有以下特殊的作用,也是编码的一些小特性。x = x or v -- 初始化赋值,初始时指定值为v,为了更进一步说明,该语句等价于下述代码 if not x then x = v end -- 三元表达式,Lua没有三元表达式,但是可以通过一下特性实现 (a and b) or c -- 该语句等价于java中的 a ? b : c。当a为假时,返回第一个操作数a,剩余 a or c, -- 而a为假,则返回c;当a为真时,返回第二个操作数b,剩余b or c,b为真,则返回b。 -- 根据上述特性,可以使用逻辑运算符实现取最大数,前提是操作数不为nil max_value = (x > y) and x or y -- 当x>y为真时,则返回第二个操作数x,x为真,所以返回x; -- 当x>y为假时,返回第一个操作数,剩余(x>y) or y,而第一个操作数为假,则返回y。 -- 从而实现取最大数,最小数和这个表达式相反。
条件判断
条件语句是依据给定的条件进行判断,如果条件满足,则执行分支语句,当不满足时,执行另外得分支语句。正是因为条件判断语句,才使得各种任务和业务得以实现,条件判断也是业务程序实现的基石。
比如:对于会员来说,年底给会员发送春节短信,当会员消费超过一千时,发送红包,使用
if语句实现:
userConsume = 700
if userConsume >= 1000 then
print("send a gift to user")
end
print("blessing sms")
-->> blessing sms
如果if条件判断为true,则执行then及end之间的语句,否则就跳过。可以给if添加else语句,这样就会出现两个不同分支,满足true,则执行if语句,否则就执行else语句。
userConsume = 700
if userConsume >= 1000 then
print("send a gift to user")
else
print("your consume is not enough")
end
print("blessing sms")
当会员制度细节更具体时,需要嵌套if完成,Lua中提供了elseif,可以实现嵌套if的工作:
userConsume = 800
if userConsume >= 500 then
print("send a 10 yuan gift to user")
elseif userConsume >= 800 then
print("send a 20 yuan gift to user")
elseif userConsume >= 1000 then
print("send a 30 yuan gift to user")
else
print("your consume is not enough")
end
print("blessing sms")
在条件判断的执行过程中,当有一个if命中,则后续的条件判断都不再执行,因此上述语句中,发送了10元红包。条件判断需要根据具体的需求进行调整,使得业务逻辑不存在问题。
条件判断的语法规则:
if <条件判断1> then
<执行语句1>
elseif <条件判断2> then
<执行语句2>
[elseif...]
else
<else执行语句>
end






网友评论