解决lua三元运算符问题
lua吧
全部回复
仅看楼主
level 1
tzwsoho 楼主
相信很多人都知道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
tzwsoho 楼主
不好意思。。。这样做貌似还是错的。。。没有对a进行判断了。。。。
2009年11月12日 06点11分 2
level 1
所以前提是B不为假
2009年11月25日 04点11分 3
level 0
(a and {b} or {c})[1]
2009年12月05日 16点12分 4
牛逼。。。。
2013年10月08日 03点10分
算是求道的写法了,从代码清晰性和运行效率来考虑,远不如封装一个函数来得好
2014年06月25日 03点06分
level 0
多谢4楼赐教!
2009年12月07日 04点12分 5
level 1
(a and b)or c行不??
2010年04月01日 07点04分 6
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
1