level 1
相信很多人都知道c中的三元运算符a?b:c在lua里面可以写成a and b or c,但是这里其实有个问题,就是当b是false或者nil时无论a是什么最后结果都会返回c的值,这个问题估计也有不少人碰到过了的,这里我提供我的解决办法:b and (a and b or c)
不知道各位还有什么高招没?欢迎指出!
2009年11月12日 06点11分
1
level 1
不好意思。。。这样做貌似还是错的。。。没有对a进行判断了。。。。
2009年11月12日 06点11分
2
level 1
楼上的是教科书上的答案,但有问题.
a?b:c
对a进行判断,如果a为真,表达式的值为b,否则为c.
(a and b) or c
假设 a为假, a and b返回a ,a已经确定为假 所以 a or c 返回c,这个是符合c语言的三元表达式的.
但是当 a 为真,返回了b or c,如果b为真则返回b,这样是没问题的, 但是如果b为假,那么将返回c, 而这明显不符合c语言的三元表达式a?b:c .
所以还是 if a then b else c end .
2010年07月17日 16点07分
7
level 1
这个问题我也发现了。。。。哎。。。写书的忽略了。。。翻译的根本就没有深入考虑这个问题 。。。。
2010年12月16日 03点12分
8