Doppelt hält besser

Sep 2007
01

0 Kommentar(e)

Eingetragen von Martin Maciaszek

Ich benutze oft einen recht nützlichen Rubyismus, den ich bang-bang nenne. In meinem fiktiven User-Modell habe ich folgende Methode.

def married?
  !! spouse
end

Die Methode spouse würde hier einfach nur eine Instanz des User-Models mit dem Ehepartner zurückgeben. Aber was sollen die beiden Ausrufezeichen (in Unix-Kreisen als bang bezeichnet) da? Ein Ausrufezeichen in Ruby ist normalerweise eine logische Negation. Zwei Ausrufezeichen sind also eine doppelte Negation.

Wer in der Schule aufgepasst hat, wird nun einwerfen, daß eine doppelte Negation sich selbst wieder aufhebt. Das ist auch korrekt, doch in Ruby gelten etwas andere Regeln. Alles was nicht false oder nil ist, gilt als wahr. Liefert also die Methode spouse einen Ehepartner zurück, so gibt die Methode married? das Ergebnis true zurück.


Hinterlasse einen Kommentar