Wenn ein Wert fehlen könnte
Wenn ein Wert vielleicht nicht da ist - das vierte Element einer Liste mit drei -, sagt die Antwort das, und ?? oder match entscheiden, was dann passiert.
Eine Liste mit drei Namen hat keinen vierten. winners[3] würde das Programm anhalten, weil es nichts gibt, das es
zurückgeben könnte. winners.get(3) fragt stattdessen höflich: Es antwortet entweder mit dem Wert oder mit nichts,
und du entscheidest, was dann passiert.
?? ist der einfachste Weg zu entscheiden: winners.get(3) ?? "nobody" ist der Wert, wenn es einen gibt, und
"nobody", wenn nicht.
const winners = ["Ada", "Alan", "Grace"]
const third = winners.get(2) ?? "nobody"
const fourth = winners.get(3) ?? "nobody"
print "Third place: {third}"
print "Fourth place: {fourth}"
// prints Third place: Grace
// prints Fourth place: nobodyEtwas oder nichts#
Die Antwort von get ist einer von zwei Fällen, wie das Wetter der letzten Lektion: Some(name), wenn es einen Wert
gibt, und None, wenn nicht. match kann sie auseinandernehmen und muss beide behandeln.
Viele Sprachen haben einen besonderen Wert für "nichts", der überall passt, und ein Programm stürzt ab, wenn es vergisst, danach zu fragen. In TorbScript ist "vielleicht nichts" ein eigener Typ, ein Option, sodass der Computer merkt, wenn eine Prüfung fehlt.
const winners = ["Ada", "Alan", "Grace"]
match winners.get(0) {
Some(name) => print "The winner is {name}!"
None => print "Nobody won."
}
// prints The winner is Ada!Übung#
Gib den dritten Gast aus, oder nobody, wenn es keinen dritten gibt. Bei zwei Gästen gibt das Programm nobody aus.
const guests = ["Ada", "Alan"]
print guests[0]nobodyAuf deinem Computer ausführen: torb run missing-values.trb
Tipp
Frag mit guests.get(2) und benutze ?? "nobody" für den Fall, dass nichts zurückkommt. Gib dem Ergebnis einen
Namen, bevor du es ausgibst.
Lösung
const guests = ["Ada", "Alan"]
const third = guests.get(2) ?? "nobody"
print third
// prints nobodyZusammenfassung#
Ein Wert, der fehlen könnte, ist Some(value) oder None, und ?? oder match entscheiden, was passiert, wenn er
None ist.