Stan: Was heißt "===" ?

Hi,

Was heißt das, wenn bei einer if-Abfrage steht: if ($var==="") oder so ähnlich?
Ich kenne nur $var=="" und $var!=""

Was bedeuten drei Istgleichzeichen?

Stan

  1. Hallo!

    Dabei wird nicht nur überprüft, ob der Wert der Variablen übereinstimmt, sondern auch, ob zusätzlich auch noch der Typ der beiden Variablen gleich ist.

    Michael

  2. puts "Hallo " + gets.chomp + "."

    ?> Stan
    => Hallo Stan.

    Was bedeuten drei Istgleichzeichen?

    Das steht im Handbuch; sogar mit Testfällen.

    Einen schönen Montag noch.

    Gruß, Ashura

    --
    Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
    30 Days to becoming an Opera8 Lover -- Day 20: search.ini
    Meine Browser: Opera 8.01 | Firefox 1.0.4 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0
    [Deshalb frei! - Argumente pro freie Software]
  3. Hallo,

    Was bedeuten drei Istgleichzeichen?

    Das auch der Typ Stimmen muss!
    boolean a = true

    if (a === "true") ist false

    aber
    if (a === true) ist true

    Das eine ist ein String das andere eine Variable vom Typ Boolean

    demnach sollte auch:
    if (a == "true") true sein

    Mit freundlichem Gruß
    Micha

  4. Was bedeuten drei Istgleichzeichen?

    = ist ein Zuweisungsoperator, kann also nicht für Vergleiche verwendet werden.

    == ist ein Vergleichsoperator, wird also am häufigsten benutzt.

    === ist ebenfalls ein Vergleichsoperator, und prüft, ob etwas _identisch_ ist.

    Identisch heißt mehr als gleich. Neben Inhalt von bspw Variabeln muss auch noch der Datentyp übereinstimmen. Ein Vergleich von (1==="1") wird deshalb ein "false" zurückgeben.

    Denke, ich konnte weiterhelfen.
    rudolph

    1. Hi,

      === ist ebenfalls ein Vergleichsoperator, und prüft, ob etwas _identisch_ ist.

      nur eine kleine doofe Anmerkung: "identisch" waeren m.E. bestenfalls zwei oder mehrere Referenzen auf ein und denselben Speicherbereich. Wenn ueberhaupt. Sind "Datentyp" und Datenwert identisch, so sollte m.E. nicht von einer "Identizitaet" gesprochen werden.

      Gruss,
      Ludger

      --
      "Huestel"
    2. echo $begrüßung;

      = ist ein Zuweisungsoperator, kann also nicht für Vergleiche verwendet werden.

      Das sehe ich nicht so. Das Ergebnis einer Zuweisung ist der Wert der Zuweisung.

      if ($id = getID())
        Verwendung von $id

      Das ist kein Fehler sondern Absicht. getID() liefert eine ID -- oder 0 wenn es keine ID ermitteln konnte. Der Rückgabewert von getID() wird $id zugewiesen und if vergleicht ob ein ID-Wert ungleich 0 ermittelt werden konnte, und arbeitet dann mit dem in $id zwischengespeicherten Wert den Anweisungsblock ab.

      echo "$verabschiedung $name";

      1. Hallo,

        Das sehe ich nicht so. Das Ergebnis einer Zuweisung ist der Wert der Zuweisung.

        if ($id = getID())
          Verwendung von $id

        Völlig korrekt. Aber dann hast du auch keinen _Vergleich_, sondern nur eine _Auswertung_ eines Ausdrucks als boolean. Es ändert nichts daran, dass '=' hier ausschließlich ein Zuweisungs- und kein Vergleichsoperator ist.

        Das geht in C übrigens genauso elegant. :)

        Ciao,

        Martin