Jari Williamsson wrote: > Remco Hh wrote: >> nowadays i try to improve my coding style to produce nicer and beter >> readable code. I try to improve the following code but i dont know how. >> >> if condtion1 >> x=1 >> else >> if condition2 >> x=2 >> else >> if condition3 >> x=3 >> end >> end >> x=nill >> end >> >> there are three different conditions which can not occur at the same >> time >> can i make this nicer? > > A case expression is probably the most clear alternative. The shortest > is perhaps something like: > > x = condition1 ? 1 : condition2 ? 2 : 3 > > > Best regards, > > Jari Williamsson > > Short it may be but this sort of code can hardly be called beautiful, I have had to maintain crap like this before and the few keystrokes the author saved was made up for 1000 times when someone updated it and things didn't 'quite' work how they thought. Ruby allows simplicity and clarity, this however is heading into obfuscation. The better solution is to use the elsif keyword to flatten the indentation: if (temp == 'cat') x = 1 elsif(temp == 'dog') x = 2 elsif(temp == 'banana') x = 3 else x = nil end