[−][src]Trait fortraith::iff
( if / else / then ) conditional expression
ifs can be nested and can be used both inside and outside of a function. else
clause is
optional
Examples
Return 9 if 10 is less than 1, else return 9
forth!( 10 1 < if 5 else 9 then return type Out as top ); assert_eq!(Out::eval(), 9);
FizzBuzz (of course), there are no strings or chars in fortraith so Fizz = true, Buzz = false and FizzBuzz = 0
forth!( : FizzBuzz dup 3 % 0 = if 5 % 0 = if 0 (FizzBuzz) else true (Fizz) then else dup 5 % 0 = if drop false (Buzz) then then ; 1 FizzBuzz return type Out1 as top 2 FizzBuzz return type Out2 as top 3 FizzBuzz return type Out3 as top 4 FizzBuzz return type Out4 as top 5 FizzBuzz return type Out5 as top 10 5 + FizzBuzz return type Out15 as top ); assert_eq!(Out1::eval(), 1); assert_eq!(Out2::eval(), 2); assert_eq!(Out3::eval(), true); assert_eq!(Out4::eval(), 4); assert_eq!(Out5::eval(), false); assert_eq!(Out15::eval(), 0);