Scala - postfixový if

Hackování v brilantním jazyce Scala pokračuje.
Některé jazyky jako třeba Ruby, Python nebo třeba CoffeScript mají takzvaný postfixový if a jeho obdobu unless, tedy podmínku, která se zapisuje ve formátu doSomething() if condition
. Tahle syntaxe může být o něco příjemnější, protože je bližší přirozenému jazyku.
Scala postfixový if nemá, ale – hádejte co – je to jazyk natolik flexibilní, že není problém implementovat všechno, po čem toužíme. Bohužel nemůžeme použít jméno if, protože jde o klíčové slovo, což je jediná vada na kráse. Tedy takhle: můžeme použít if, ale musíme ho pak vždycky uvádět ve zpětných apostrofech. Svému účelu poslouží označení iff.
class Iff[T](a: => T) { def iff(cond: => Boolean) = if (cond) Some(a) else None def unless(cond: => Boolean) = if (cond) None else Some(a) } implicit def postfixIf[T](a: => T) = new Iff(a) // test println("Je tam ještě?") iff true // vypíše text println("Je tam ještě?") iff 1 == 0 // nevypíše nic println("Je tam ještě?") unless false // vypíše nic println("Je tam ještě?") unless 1 == 1 // nevypíše nic
Všechno funguje díky implicitním konverzím a argumentům předávaným jménem. Podmíněný kód se provede skutečně jenom tehdy, když je podmínka pravdivá.