Perl booleans, negation (und, wie man es erklären)?

Ich bin neu hier. Nach der Lektüre über wie zu Fragen, und format, ich hoffe es wird ein OK-Frage. Ich bin nicht sehr bewandert in perl, aber es ist die Programmiersprache, ich kenne die meisten.

Ich versuche gelten Perl realen Leben, aber ich habe nicht bekommen, eine große Verständnis - vor allem nicht von meiner Frau. Ich sage Ihr, dass:

wenn Sie nicht bringen Sie mir 3 Bier am Abend, das heißt, ich habe null (oder nichts) Biere.

Wie Sie wahrscheinlich erraten, ohne viel Erfolg. 🙁

Nun sachlich. Von perlop:

Unär "!" führt eine logische negation, also "nicht".

Sprachen, was haben boolean Typen (was kann haben nur zwei "Werte") ist OK:

wenn es nicht der ist, den Wert -> muss die anderen.

so natürlich:

!true  -> false
!false -> true

Aber perl nicht boolean Variablen besitzen nur eine truth system, whrere alles ist nicht 0, '0' undef, '' WAHR ist. Problem kommt, wenn die Anwendung logische negation zu einem nicht logischen Wert z.B. zahlen.

E. g. Wenn eine gewisse Anzahl NICHT 3, das ist meine, es NULL oder leer ist, wird stattdessen der realen Leben Sinn, wo, wenn etwas NICHT 3, bedeuten, kann es sein nichts, aber 3 (z.B. null auch).

Also das nächste code:

use 5.014;
use Strictures;

my $not_3beers = !3;

say defined($not_3beers) ? "defined, value>$not_3beers<" : "undefined";
say $not_3beers ? "TRUE" : "FALSE";

my $not_4beers = !4;
printf qq{What is not 3 nor 4 mean: They're same value: %d!\n}, $not_3beers if( $not_3beers == $not_4beers );
say qq(What is not 3 nor 4 mean: @{[ $not_3beers ? "some bears" : "no bears" ]}!) if( $not_3beers eq $not_4beers );

say ' $not_3beers>',  $not_3beers, "<";
say '-$not_3beers>', -$not_3beers, "<";
say '+$not_3beers>', -$not_3beers, "<";

Drucke:

defined, value><
FALSE
What is not 3 nor 4 mean: They're same value: 0!
What is not 3 nor 4 mean: no bears!
 $not_3beers><
-$not_3beers>0<
+$not_3beers>0<

Außerdem:

perl -E 'say !!4'

was ist nicht nicht 4 IST 1, statt 4!

Die obigen Aussagen mit der Frau von "falschen" (Mittelwert 0) :), aber wirklich versucht beizubringen, mein Sohn Perl-und er, nach einer Weile, fragte meine Frau: , warum, wenn etwas nicht 3 meine, es ist 0 ? .

Also die Fragen sind:

  • wie ist das zu erklären, mein Sohn,
  • warum perl hat das design, also warum !0 ist immer 1
  • Ist hier etwas "hinter", was erfordert, als !0 ist nicht Zufallszahl, aber 0.
  • wie ich schon sagte, ich weiß nicht, auch in anderen Sprachen - und das in jeder Sprache ist !3 == 0?
  • Ich fühle mich wie es ist eine tief greifende argument Versuch gemacht werden, den ich hier einfach nicht, um zu sehen, was es ist.
  • werde versuchen, das perl-Logik mit meiner Frau & Bier 🙂
  • Ich habe nicht hatte keine drei Bier. Heißt das, ich habe vier Bier?
  • Vermutlich Ihre Frau mit überladenen ! Betreiber. 🙂 Check die overload::Overloaded $beer.
  • Die ! Betreiber gilt für Boolesche Werte. Der Ausdruck !3 ist eine Kurzform für !(3 != 0) die eingeklammerten Ausdruck, welcher die implizite Boolesche Wert wird negiert. Da (3 != 0) wahr ist oder 1, seine negation ist 0 oder false. Das ist, warum !3 == !4.
InformationsquelleAutor elfiress | 2013-07-05
Schreibe einen Kommentar