Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Funktion, die beliebigen Typ zuweist und als Bool auswertet (https://www.delphipraxis.net/158767-funktion-die-beliebigen-typ-zuweist-und-als-bool-auswertet.html)

rollstuhlfahrer 2. Mär 2011 15:40

AW: Funktion, die beliebigen Typ zuweist und als Bool auswertet
 
Zitat:

Zitat von WladiD (Beitrag 1085298)
Code:
function Foo($Value)
{
  if ($LocalValue = $Value * 10) && ($LocalValue > 100)
    return $LocalValue - 1;
  else
    return $LocalValue + 1;
}

Mir ist generell unverständlich, warum man noch die Zuweisung per IF-Abfrage regeln muss, da da eh 100%ig TRUE rauskommt. Dann macht man den Vergleich auf größer 100 und nachdem man beide Teilergebnisse hat, nimmt man noch das boolesche UND. Nur weil etwas geht, muss man das nicht unbedingt machen.
Dieses Konstrukt würde ich mir gar nicht erst angewöhnen, da die Fehleranfälligkeit stark steigt, da der Vergleich mit 2x "=" stattfindet. Immer wenn ich mit Vergleichen ein Problem habe (PHP), liegt es daran, dass einfach ein "=" zu wenig vorhanden ist.

Bernhard

WladiD 2. Mär 2011 15:55

AW: Funktion, die beliebigen Typ zuweist und als Bool auswertet
 
Zitat:

Zitat von rollstuhlfahrer (Beitrag 1085383)
Zitat:

Zitat von WladiD (Beitrag 1085298)
Code:
function Foo($Value)
{
  if ($LocalValue = $Value * 10) && ($LocalValue > 100)
    return $LocalValue - 1;
  else
    return $LocalValue + 1;
}

Mir ist generell unverständlich, warum man noch die Zuweisung per IF-Abfrage regeln muss, da da eh 100%ig TRUE rauskommt. Dann macht man den Vergleich auf größer 100 und nachdem man beide Teilergebnisse hat, nimmt man noch das boolesche UND. Nur weil etwas geht, muss man das nicht unbedingt machen.
Dieses Konstrukt würde ich mir gar nicht erst angewöhnen, da die Fehleranfälligkeit stark steigt, da der Vergleich mit 2x "=" stattfindet. Immer wenn ich mit Vergleichen ein Problem habe (PHP), liegt es daran, dass einfach ein "=" zu wenig vorhanden ist.

Bernhard

Hi Bernhard,

1. Das war nur ein Beispiel, um zu verdeutlichen, dass man in einigen Sprachen direkt in der Bedingung eine Zuweisung durchführen kann, was bei Delphi mit Bordmitteln (meiner Meinung nach) nicht geht

2. ($LocalValue = $Value * 10) wird in PHP nicht 100%ig zu TRUE gewandelt, sondern nur wenn das Ergebnis von $LocalValue nach Zuweisung <> 0 ist. Siehe PHP-Dokumentation. Wenn man also an die fiktive Funktion 0 übergibt (0*10=0), so wird die zweite Bedingung erst gar nicht ausgewertet.

3. Mir ging es dabei um andere Aspekte

mfg

Waldemar


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:48 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz