PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : unless () vs. if !()



samsara
06-09-2003, 01:15
Kleines Beispiel:


unless ($string =~ /$matchme/) {
&mach_wat;
}

if ($string !~ /$matchme/) {
&mach_wat;
}

oder gar:


if (!($string =~ /$matchme/)) {
&ihr_wisst_schon;
}

Ich weiss, ich koennte mir jetzt ein paar Skripte schreiben, die die jeweilige Operation zwei Billionen mal durchfuehren, um zu testen, was effizienter ist, aber ich dachte, ich frage erstmal, was die Erfahrungen so sind, bevor ich meine CPU grillen gehe.

Was meint Ihr? Ist unless effizient?

Danke,

Samsara

Edit: Der Vollstaendigkeit halber haette ich vielleicht noch folgende Variante einfuehren sollen, auch wenn sie mir recht doof vorkommt:


if ($string =~ /$matchme/) {
} else {
&tu_etwas;
}

peschmae
06-09-2003, 08:04
Ich gehe eigentlich davon aus dass das intern dasselbe ist. Wäre ja auch Overhead if und unless separat je einmal zu implementieren.

MfG Peschmä

pitu
06-09-2003, 10:01
Ja und nein.

Es ist tatsaechlich nur ein umgekehrtes if. oder uebersetzt, ein "ausser"

Es macht aber schon sinn, es zu verwenden.

Die if anweisung wird normalerweise benutzt, etwas zu tun, wenn eine bedingung zutrifft.

Die unless anweisung wird benutzt, um aufzuhoeren, wenn eine bedingung zutrifft.

Dadurch erhoeht sich dann auch die uebersicht im code. Da du sofort siehst, was du gerade programmiert hast, etwas tu, oder etwas aufhoeren.

gruss,
pitu

BLUESCREEN3D
06-09-2003, 14:08
Ich würde immer if benutzen...
Habe von unless bis jetzt noch nichtmal was gehört, scheint also nicht gerade der Standardbefehl zu sein und wenn es den nicht in allen Programmiersprachen gibt, dann benutze ich den nicht...

sticky bit
20-09-2003, 23:36
Es bringt eigentlch nur Geschwindigkeit beim Schreiben des Programmes, wenn man gerade die richtige logische Reihenfolge für ne Bedingung mit unless im Kopf hat muss man nicht zuerst auf if negieren.
Auch wenn es natürlich das ganze zugegebne nicht "international" (also z. B. in "C Land"...) lesbar hält...

peschmae
21-09-2003, 08:11
ja, aber du negierst recht schnell automatisch auf if.
Werden die Bedingungen komplexer musst du eh erst mal hirnen - auf ein ! mehr oder weniger kommts da dann auch nicht mehr drauf an

MfG Peschmä