(Copypasted from
https://gist.github.com/SoniEx2/99882fa8d5a0740339b0#the-orif-idea )
The orif Idea
=============
orif (possible operators: `|if`, `orif`, `or if`, ...) is a construct that allows if statements with **explicit** fall-through.
Trivial use-case
----------------
Take the following piece of Java:
```java
boolean flag = false;
switch (i) {
case 1:
flag = true;
// fallthrough
case 2:
System.out.println(flag)
break;
default:
System.out.println("Unknown!")
}
```
In Lua (there are many ways to do it, I just picked one at random):
```lua
local flag = false
if i == 1 then
flag = true
end
if i == 1 or i == 2 then
print(flag)
end
if i ~= 1 and i ~= 2 then
print "Unknown!"
end
```
With orif:
```lua
local flag = false
if i == 1 then
flag = true
orif i == 2 then -- explicit fallthrough
print(flag)
else -- default
print "Unknown!"
end
```
Differences between orif and switch
-----------------------------------
Here's a list of pros and cons, where we compare speed, flexibility and clarity of switch and orif.
Switch:
- +Essentially jump tables. (speed)
- -Constant cases. (flexibility)
- -Fallthrough-by-default (on most programming languages). (clarity)
Orif:
- -If-else chain. (speed)
- +Lets you test any conditions. (flexibility)
- +Explicit fallthrough. (clarity)
--
Disclaimer: these emails are public and can be accessed from <TODO: get a non-DHCP IP and put it here>. If you do not agree with this, DO NOT REPLY.