Bool prüfung für Strings Array´s Integer

  • Da es mich ankotzt jedes mal aufwendige ifs zu schreiben wenn man nur auf wahrheitsgehalt prüfen möchte hab ich mir die Funktion Bool geschrieben.
    Vielleicht kann ja der eine oder andere diese gebrauchen.
    Hier ein kleines Snippet was Array´s Integer Strings auf Bool prüft.
    Sprich ob sie True oder False sind.

    [autoit]


    Func bool($wert)
    If IsBool($wert) Then Return $wert
    If IsNumber($wert) and $wert > 0 Then Return True
    If IsString($wert) and $wert <> "" Then Return True
    If IsArray($wert) Then Return True
    Return False
    EndFunc ;==>bool

    [/autoit][autoit][/autoit][autoit]

    #cs
    bool("Hallo Welt") Liefert True da der String nicht lerr ist
    bool(1) Liefert True da der Integer größer 0 ist
    bool(-1) Liefert False da der Integer kleiner/gleich 0 ist
    Desweiteren werden Array´s Unterstützt wenn diese nicht Leer sind wird True geliefert andernfalls False
    #ce

    [/autoit]

    Einmal editiert, zuletzt von Gummibaer (18. August 2010 um 09:17)

  • Hi Gummibaer!

    Nette Idee!

    Du kannst deine Funktion auch kürzer machen! ;)

    [autoit]

    Func bool($wert)
    If (IsBool($wert) Or IsNumber($wert) And $wert > 0 Or IsString($wert) And $wert <> '' Or IsArray($wert)) Then Return True
    Return False
    EndFunc ;==>bool

    [/autoit]

    LG Kleiner

  • Von der geschwindigkeit ist es realtiv
    Maximal von den Codezeilen :)

    Ist kurzer hand entstanden,
    da immer andere Funktion genutz werden müssen um nur den wahrheitswert zu prüfend.
    so lassen sich prüfungen schneller Scripten

    PHP zb kann das alleine wenn man is_bool prüft ;)

    • Offizieller Beitrag

    Ich finde es nicht sinnvoll, mehrere Typen in einer Abfrage abzuhandeln.
    Dadurch geht der Kontext des Skriptes verloren.
    Bsp.:

    [autoit]

    If bool($wert) Then

    [/autoit]


    sagt mir doch nichts mehr über den Grund der Prüfung. Und das ist doch elementar für mein Skript.
    Wenn ich prüfe, dann ganz gezielt auf einen Typ um entsprechend reagieren zu können. Im Moment des Schreibens ist einem das bewußt. Aber glaub mir, wenn du nach einem Jahr in das Skript schaust, grübelst du: "WTF, auf was hab ich da bloß geprüft?" :D

  • Ist ist ja nicht für alle Überprüfungen.

    zb eine Funktion soll was zurückwerfen und ich will nur wissen ob da alles glatt gelaufen ist kann ich mittels bool einfach schnell prüfen
    Wenn ich im Script zb auf ein Array bestehe Prüf ich das natürlich Seperat mit IsArray.
    Man muss diese Funktion natürlich richtig einsetzen wer alles nur noch mit bool prüft, geb ich dir recht, wird den Sinn nach einer Zeit nicht mehr verstehen.

    Das richtige einsetzen der Prüfung ist sinnvoll.

    Theoretisch könne man Bool noch erweitern hab ich extra drausen gelassen zb um Strings zu Prüfen

    "1" => True
    "0" => False
    "yes" => True
    "no" => False
    on,off,an,aus usw

    Das gibt ein Haufen möglichkeiten... Die ich mit absicht draußen gelassen habe da sowas immer Einzelnd geprüft werden sollte!

    Aber danke fürs Feedback :)

  • Hi Gummibaer!

    Nette Idee!

    Du kannst deine Funktion auch kürzer machen! ;)


    Wenn schon, dann auch richtig :P

    [autoit]

    Func _Bool($vVar)
    Return $vVar <> False
    EndFunc ;==>_Bool

    [/autoit]
    Spoiler anzeigen
    [autoit]

    Local $iNull = 0, $iEins = 1, $sString = "Test", $sLeerString = "", $aArray[2] = [25, 52], $sRet = _
    "$iNull : " & _Bool($iNull) & @CRLF & _
    "$iEins : " & _Bool($iEins) & @CRLF & _
    "$sString : " & _Bool($sString) & @CRLF & _
    "$sLeerString : " & _Bool($sLeerString) & @CRLF & _
    "$aArray : " & _Bool($aArray) & @CRLF
    MsgBox(0, "", $sRet)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Bool($vVar)
    Return $vVar <> False
    EndFunc ;==>_Bool

    [/autoit]