Raku-Kurs / Grundlagen / Grundlagen des Kontrollflusses / Bedingte Überprüfungen / Vergleichen von Zeichenketten

Quiz 2 — die Bedingung in if*

Korrigieren Sie das Programm und beantworten Sie die Frage.

.my $password = prompt 'Geben Sie Ihr Passwort ein: ';
.
eq =if $password ␣␣ '*&(#&$#Y' {
.    say 'Richtig';
.}
.else {
.    say 'Falsch';
.}

Was macht dieses Programm mit dem = im Test?

Druckt immer „Richtig“Ihre Antwort:  (: Druckt immer „Richtig“, Druckt immer „Falsch“, Druckt „Richtig“ für richtige Passwörter und „Falsch“ für falsche, Druckt „Falsch“ für richtige Passwörter und „Richtig“ für falsche :)
Das Programm druckt immer „Richtig“, weil $password = ’*&(#&$#Y’ eine Zuweisung ist, die den neuen Wert der $password-Variablen festlegt. Da der Wert weder null noch eine leere Zeichenkette ist, wird er als True betrachtet. Das vom Benutzer eingegebene Passwort wird in diesem Fall nie überprüft.

Wenn Sie == eingeben, wird das Programm fehlschlagen, da es versucht, die Zeichenketten (das Benutzerpasswort und das richtige Passwort) in Zahlen umzuwandeln und dabei scheitert.

Kursnavigation

Quiz 1 — Zeichenketten vergleichen   |   Ternärer Operator