ELSIF == ELSE IF *heul*
Aquariophile
- perl
Hallo !
Also, es ist mir klar dass ich mich nun für den vollen DAU halten werden,
vielleicht bin ich es ja auch,
aber die Frage liegt mir echt schwer im Magen....
Also:
if (...)
{
wird ausgeführt wenn die Aussage in Klammern TRUE ist
}
ELSE (...)
{
wird ausschließlich dann ausgeführt wenn die vorhergehende (??) IF
_FALSE_ war...
}
soweit alles klar
Zwischenfrage:
wenn mehrere IF vorgehen und dann eine ELSE ??
Wem gehört die else?
Weiter im Text:
wenn jede ELSIF in Perl das Selbe ist wie
ELSE IF
dann stehen da aber mehrere ELSE (mit nem IF) hintereinander.
Theoretisch wird ja jede IF und so nur dann false,
wenn das in (...) _nicht_ TRUE ist.
aber:
wie kann die ELSE _ohne_ Klammer (...) False werden,
wenn die IF nur drin sind aber dann ist das if false und nicht die Else ??
else
{
if (...) { ... }
}
dann ist die ELSE doch noch immer ausgeführt auch wenn IF vielleicht false ist...
Also wie schaut das nun in der Praxis aus?
Frage:
Ich habe als Beispiel-Script nur zum veranschaulichen für mich ein Script gemacht
(simples Loginscript)
Es läuft zu 100% Korrekt,
das heiß wenn ich sage "bitte umändern" ist das keine fiese tour,
weil ich kann es ja eh "beweis: Script geht ja eh!"
Aber:
Ich würde den Antworter bitte das Script von dem URL den ich jetzt hereinschreibe so zu verändern,
dass _KEINE_
ELSIF mehr vorkommt,
und alles geschickt mit ELSE IF gelöst wird.
Und mitte mit #kommentarren
die auf meine obigen Fragen eingehen damit ich endlich ELSIF in Form von ELSE IF verstehe.
Danke
http://www.salonestetica.at/login.txt
LG,
Aquariophile
Hallo Aquariophile,
Aber:
Ich würde den Antworter bitte das Script von dem URL den ich jetzt hereinschreibe so zu verändern,
dass _KEINE_
ELSIF mehr vorkommt,
und alles geschickt mit ELSE IF gelöst wird.
Und mitte mit #kommentarren
die auf meine obigen Fragen eingehen damit ich endlich ELSIF in Form von ELSE IF verstehe.
sonst noch Wünsche?
Das muß genügen:
if( foo == bar)
{
foobar();
} elsif( foo < bar)
{
barfoo();
}
ist das gleiche wie:
if( foo == bar)
{
foobar();
} else {
if( foo < bar)
{
barfoo();
}
}
CYa
GONZO
Hallo Aquariophile,
Zwischenfrage:
wenn mehrere IF vorgehen und dann eine ELSE ??
Wem gehört die else?
wenn du mehrere If's so untereinander hast und darunter ein Else,
so gilt dieses Else nur, wenn keine der drei anderen Bedingungen
zutrifft.
If (Zahl>=3)
{
....
}
If (Zahl<=5)
{
....
}
If (Zahl=3)
{
....
}
Else
{
....
}
Eine If - Anweisung [If(Benutzer="Dick")] in einer If -Anweisung ->
If (Zahl>=3)
{
If (Benutzer="Dick")
{
...
}
}
gilt immer nur innerhalb des Abschnittes den du mit deiner
ersten IF-Anweisung abgegrenzt hast. Sie wird logischerweise
auch immer nur dann ausgefuehrt, wenn das Ergebnis Zahl>=3 zutrifft.
Wenn du nun unter
If (Benutzer="Dick")
{
...
}
ein Else hinzufuegst, dann gehoert diese Else zu dem If(Benutzer="Dick")
.
Also ist dann der Wortlaut: "Wenn der Benutzer "Dick" ist dann gib ihm eine
Diaet, (ELSE) wenn der Benutzer nicht dick ist, dann mach was
anderes mit ihm.
Also alles was in dem IF (Zahl>=3) Abschnitt passiert, interessiert diese
IF(Zahl>=3) Anweisung nicht die Bohne (Sonderbefehle natuerlich ausgenommen).
Das gilt auch fuer den darunter befindlichen Code. Hast du die If(Zahl>=3)
einmal geschlossen, sind die Befehle die darinstehen "vergessen" und werden
nicht mehr beruecksichtigt.
Abschliessend die ganze Anweisung zum besseren Ueberblick:
If(Zahl>=3)
{ //ANFANG IF 1
| If (Benutzer="Dick") |
| { |
| //"mach Diaet!" |
| } |IF und Else gehoeren
| Else |zusammen!
| { |Auch wenns mehrere IF
| //mach keine Diaet aber Sport |sind, gilt das selbe!
| //oder sonstwas |
| }
} //ENDE IF 1
Hoffe das das verstaendlich war
Gruss
Sonia
ZUSATZ-->>>
wenn du mehrere If's so untereinander hast und darunter ein Else,
so gilt dieses Else nur, wenn keine der drei anderen Bedingungen
zutrifft.
If (Zahl>=3)
{
....
}
If (Zahl<=5)
{
....
}
If (Zahl=3)
{
....
}
Else
{
....
}
Das ist nicht ganz richtig [1]...um genau zu sein ...interessiert nur die
unterste IF-ANweisung! Bitte schnell das oben vergessen und nieeee
wieeeder dran denken :-)) Das Else gehoert zu dem direkt darueberbefindlichen
IF sonst nirgendwo hin.
tse tse tse sowas noch falsch zu erzaehlen, koennt man ja denken ich
haetts erst gestern gelernt...
[1] DAS IST KOMPLETTER SCHWACHSINN!
Sonia
Moin,
If (Zahl=3)
Else
[1] DAS IST KOMPLETTER SCHWACHSINN!
und wuerde auch nie funktionieren. Perl ist casesensitiv....
n.d.p.
Hi,
If (Zahl=3)
Else
[1] DAS IST KOMPLETTER SCHWACHSINN!
und wuerde auch nie funktionieren. Perl ist casesensitiv....
Hmm, weiß zwar nicht, was das jetzt mit case-sensitive zu tun haben soll, aber es würde tatsächlich nicht funktionieren, denn aus Zahl=3 macht Perl eine Zuweisung ...
cu, Vedat
Hi,
If (Zahl=3)
Can't modify constant item in scalar assignment at D:\schrott\fehler.pl line 4,near "3)
Else
Can't call method "Else" without a package or object reference at D:\schrott\fehler.pl line 8.
und wuerde auch nie funktionieren. Perl ist casesensitiv....
Hmm, weiß zwar nicht, was das jetzt mit case-sensitive zu tun haben soll, aber es würde tatsächlich nicht funktionieren, denn aus Zahl=3 macht Perl eine Zuweisung ...
Die Zuweisung ist wohl das einzige, das noch akzeptiert wird, außer bei der Option -w:
'Found = in conditional, should be == at D:\schrott\fehler.pl line 3.'
Grüße
Klaus
*lol *lol
If (Zahl=3)
Can't modify constant item in scalar assignment at D:\schrott\fehler.pl line 4,near "3)
Else
Can't call method "Else" without a package or object reference at D:\schrott\fehler.pl line 8.
und wuerde auch nie funktionieren. Perl ist casesensitiv....
Hmm, weiß zwar nicht, was das jetzt mit case-sensitive zu tun haben soll, aber es würde tatsächlich nicht funktionieren, denn aus Zahl=3 macht Perl eine Zuweisung ...
Die Zuweisung ist wohl das einzige, das noch akzeptiert wird, außer bei der Option -w:
'Found = in conditional, should be == at D:\schrott\fehler.pl line 3.'
*kicher* mag ja alles sein, von mir aus haette auch Banane drinstehen
koennen *grins*
ging doch eigentlich darum wie if ueberhaupt funktioniert-
funktioniert das IF in perl anders? ich bin einfachmal nicht davon
ausgegangen. Ich ging eigentlich auch nicht von Perl aus, sondern mehr
allgemein...;-)
Sonia
Hallo Sonia,
ging doch eigentlich darum wie if ueberhaupt funktioniert-
Ich weiß schon. Aber ich konnte es mir nicht verkneifen, da Vedat ja meinte, der Fehler liegt bei der Zuweisung anstelle des Vergleichs.
funktioniert das IF in perl anders?
anders als bei welcher Programmiersprache?
Das Einzige, das mit bei Perl aufgefallen ist, daß es 'elsif' anstelle von 'else if' in C verwendet. Aber das liegt wohl daran, daß es in Perl (im Gegensatz zu C) unbedingt notwendig ist, einen Funktionsblock zu benutzen.
Ach ja, und dass es auch noch unless gibt, und dass man auch
print 'blabla' if $zahl == 3;
verwenden kann.
Aber sonst funktionieren Verzweigungen eigentlich immer so wie erwartet, wie das meiste bei Perl ;-)
Näheres kann ja jeder Interessierte unter
perldoc perlsyn
nachlesen.
Grüße
Klaus
Hi!
Zunaechst darf ich Dir zum unverstaendlichsten Posting des Monats gratulieren. Wenn Du beim naechsten Mal Deine Frage etwas weniger konfus stellst, wird es uns leichter fallen, darauf konkret einzugehen.
Ich denke mal, in den Antworten steht fast alles drin, was Du wissen wolltest. Nur noch zwei kleine Ergaenzungen:
Zwischenfrage:
wenn mehrere IF vorgehen und dann eine ELSE ??
Wem gehört die else?
Diese Frage stellt sich in Perl nicht, da Du hier gezwungen wirst, immer alles in geschweifte Klammern zu schreiben, und so eindeutig ist, was zu wem gehoert. (In C existiert das Problem aber tatsaechlich, und dort ist die Antwort, dass sich ein else immer auf das am naechsten vorhergehende if bezieht.)
Theoretisch wird ja jede IF und so nur dann false,
wenn das in (...) _nicht_ TRUE ist.
Du sagst hier nichts anderes als FALSE = NOT(TRUE), und das ist nicht von der Hand zu weisen.
So long