use strict und booleans
Cruz
- perl
0 Christian Kruse0 Cruz
0 Struppi
Hallo,
In Java gibt es ja die wunderbare Möglichkeit...
TestMe()
{
if (rot) return false;
if (grün) return true;
}
if (TestMe())
{
print "yay es ist grün";
}
if (!TestMe())
{
pritn "misst es ist rot";
}
Aber in Perl scheint sowas nicht zu gehen. Man muss wohl sowas wie...
if (TestMe() eq TRUE)...
schreiben. Zudem verbietet noch use strict die Verwendung von TRUE und FALSE als barewords, also wird das ganze nur noch zu nem blöden Stringvergleich mit "TRUE". Was ist denn der beste/eleganteste Möglichkeit in Perl Booleans einzusetzen und irgendwas auf TRUE oder FALSE zu checken? (natürlich unter Verwendung von strict)
Gruß und Dank
Cruz
Hallo Cruz,
Aber in Perl scheint sowas nicht zu gehen. Man muss wohl
sowas wie...if (TestMe() eq TRUE)...
schreiben.
Selbstverstaendlich nicht. Alles, was nicht 0 ist, ist ein true
value.
Zudem verbietet noch use strict die Verwendung von TRUE und FALSE
als barewords, also wird das ganze nur noch zu nem blöden
Stringvergleich mit "TRUE".
Wenn du nicht strict verwendest und testMe() eq TRUE tippst, ist es
trotzdem ein String-Vergleich.
Was ist denn der beste/eleganteste Möglichkeit in Perl Booleans
einzusetzen und irgendwas auf TRUE oder FALSE zu checken?
(natürlich unter Verwendung von strict)
0 oder 1 zurueck geben.
sub test_me {
my $blahr = shift;
return $blahr ? 1 : 0;
}
Alternativ: Konstanten definieren.
use constant TRUE => 1;
use constant FALSE => 0;
Grüße,
CK
Danke an euch beide für die Antworten!
Die constants zu deklarieren finde ich am sympatischsten, denn es geht ja schließlich darum beim Lesen des Codes von weitem zu erkennen, dass es sich dabei um ein boolean check handelt.
Grüße,
Cruz
use Mosche;
Die constants zu deklarieren finde ich am sympatischsten, denn es geht ja schließlich darum beim Lesen des Codes von weitem zu erkennen, dass es sich dabei um ein boolean check handelt.
Jeder Perl-Programmierer wird es dir danken, wenn du die Methode mit 0/1 verwendest. Das ist perl-nativ und extra so eingerichtet, dass es eben wie eine Boolean-Variable in anderen Sprachen verwendet werden kann. Dadurch wird dein Programm am Ende lesbarer, auch wenn dies momentan ein wenig "komisch" aussieht.
Wenn du eine zeitlang Perl benutzen wirst, dann ist es sicherlich einfacher, ein paar Grundkonzepte dieser Sprache, die sich nunmal von Java unterscheidet, zu übernehmen.
use Tschoe qw(Matti);
In Java gibt es ja die wunderbare Möglichkeit...
Die gibt es in Perl auch, nur das es dort keinen boolsch'en Datentyp gibt.
TestMe()
{
if (rot) return false;
if (grün) return true;
}
das müßte dann lauten:
sub TestMe()
{
if (rot) return 0;
if (grün) return 1;
}
Die null kannst du auch weglassen,da
if( 0 )
if( undef )
if( '' )
zum gleichen Ergebniss führt.
pritn "misst es ist rot";
Nicht schlecht, 2 Fehler in 5 Wörtern, ich kann es selten besser ;-)
Struppi.