kein Bug bei MAPs

  • Ich habe gerade einen Bug bei dem Datentyp MAP entdeckt:

    Wenn ein Key in der MAP nicht vorhanden ist, dann würde ich als Rückgabe einen Leerstring oder eine Null erwarten.

    Tatsächlich ist es aber so, dass das Keyword NULL zurückgegeben wird und somit ein Vergleich auf einen Leerstring oder 0 nicht funktioniert. "Not" hingegen funktioniert.

    Hier mal ein Testscript:

    AutoIt
    Global $mMap[]
    $mMap['a'] = 'abcdef'
    
    ConsoleWrite('Ausgabe von "a": ' & $mMap['a'] & @CRLF)
    
    Global $sTest = $mMap['b'] ; den Key 'b' gibt es nicht
    If $sTest = '' Then ConsoleWrite('1. If-Bedingung erfuellt.' &@CRLF)
    If $sTest = 0 Then ConsoleWrite('2. If-Bedingung erfuellt.' &@CRLF)
    If $sTest = Null Then ConsoleWrite('3. If-Bedingung erfuellt.' &@CRLF)
    If Not $sTest Then ConsoleWrite('4. If-Bedingung erfuellt.' &@CRLF)

    Nur die 3. und 4. Bedingung wird erfüllt.

  • Ich würde das nicht als Bug bezeichnen... Wie willst du denn einen Eintrag in die Map unterscheiden, wenn du Zahlen (oder Strings) reinwirfst, wo auch 0 (oder nen leerer String) bei sein kann.

    Dann würdest du bei jedem nicht gefundenen Eintrag denken, dass stattdessen 0 (oder '') gefunden wurde.

    Von daher macht es schon Sinn, dass man nicht mit '' oder 0 vergleichen kann. Die beste Methode wäre eh "Not $sTest", von daher passt doch alles...

    Im Zweifel würde ich eher sagen, dass andere Stellen, wo das funktioniert nen Bug sind^^

  • Ich würde das nicht als Bug bezeichnen... Wie willst du denn einen Eintrag in die Map unterscheiden, wenn du Zahlen (oder Strings) reinwirfst, wo auch 0 (oder nen leerer String) bei sein kann.

    Ok jetzt, wo ich das von Dir lese, fällt es mir wie Schuppen von den Augen. Es gibt ja auch 0 und Leerstring im Value. Somit macht NULL dann doch Sinn.

    Danke für's Augen öffnen! :):thumbup:

  • Oscar

    Hat den Titel des Themas von „Bug bei MAPs“ zu „kein Bug bei MAPs“ geändert.