Talk:IfElse
There's not really any use for this, as far as i can tell. Lua supports this by its syntax sugars:
moo = (variable) and (ifTrue) or (ifFalse)
works the same as
moo = (varible) ? ifTrue : ifFalse
in C++.
oO You're right. Never thought of that. What I was thinking about, too, was something like
moo = ({ [true] = ifTrue, [false] = ifFalse })[condition]
But your code is much better. Thanks for posting this. ;D NeonBlack 22:00, 18 May 2009 (CEST)
The problem with the plain Lua version is that 'ifTrue' is also part of the test condition. Consider this:
variable = true ifTrue = false ifFalse = true moo = (variable) ? ifTrue : ifFalse == false
ElseIf works fine here:
moo = IfElse( variable, ifTrue , ifFalse ) == false
Lua's and's 'n' or's however may give unexpected results:
moo = (variable) and (ifTrue) or (ifFalse) moo == true
MrSmartArse 08:46, 4 June 2009 (CEST)
it returns true because one of the two first arguments are false.
this is lua's fault.
Flobu 11:43, 4 June 2009 (CEST)
That's no real problem since the only values that make a condition fail are nil and false. You won't want to use any of them as a result if the condition is true. In this case you should just swap the ifTrue and ifFalse and negate the condition.
local moo = not true and true or false moo == false
You would just have to remember that ifTrue must not be false or nil and that instead of that ifFalse can be false or nil. Finally I think the and-or-statement is still more effective that IfElse. NeonBlack 12:19, 4 June 2009 (CEST)