lua的三元表达式?

三元表示式,很多语言都支持。比如C语言的  表达式1?返回A:返回B

当表达式1成立的情况下,返回A,否则返回B。

 

lua存在三元表达式么?我百度一下,有人推荐用and or来实现。比如

local ret = a>b and a or b

当a>b成立的时候,返回a,否则返回b。以此来获取a,b之间较大值。

 

咋一看,没毛病,确实达到了三元表达式的一般性目的。

但事实上,这只是模拟了一般的三元表达式,如果产生思维定式,认为这就是三元表达式的话就可能带来潜在问题。

比如:

local ret = a>b and true or false

用这个ret来判断a是否大于b也没问题。

但是

local ret = a>b and false or true

用这个ret来判断a和b的关系,那就大错特错了。因为ret恒为true。无论a>b的结果如何,a>b and false的结果都是false,然后false or true的结果都是true。

 

这么一看确实不符合三元表达式,大部分的情况下还是可以的,前提是“表示式X and  返回A or 返回B”中的A一定要是true的才行。换句话说 if A then 这个一定要是成立的。

 

最后说一句,其实 当你想在lua用这种三元表达式获取 表达式的true 还是 false的时候,完全没必要,直接写 local  ret = a>b 不就完事了?。

你可能感兴趣的:(cocos-lua)