← Rust/De eerste bouwstenen
Les 3 van 3
MODULE 01 · 03◷ 16 min

Maak tekst persoonlijk

Na deze les kun je
  • Een waarde in tekst invoegen
  • Tekst en een berekening combineren

Een wandelplanner stuurt een bericht met de naam van de wandelaar en de afstand van de volgende route. Die gegevens horen bij elkaar in één leesbare zin. Met invulplaatsen kun je dezelfde tekstvorm voor verschillende waarden gebruiken.

Vaste tekst en veranderlijke gegevens

Je kunt met let ook een tekstwaarde een naam geven. Bij let walker = "Noor"; verwijst de naam walker naar de geschreven tekst. Voor deze les hoef je de precieze Rust-teksttypen nog niet te kennen; je leest de waarde en toont haar.

De eerste string in println! heet hier de formaattekst. Daarin schrijf je de vaste delen van het bericht en markeer je de plaatsen waar waarden moeten komen. Zo houd je de zin overzichtelijk, ook wanneer er meer dan één gegeven in staat.

Een bestaande naam invullen

Rust kan een beschikbare naam direct uit de formaattekst lezen. Bij println!("Hoi, {walker}!"); staat de naam tussen accolades. De macro vult de waarde in en de accolades zelf verdwijnen uit het bericht.

De spatie na de komma hoort bij de vaste tekst. Rust vult gegevens in, maar verzint er geen ontbrekende leestekens bij. Schrijf dus buiten de invulplaats precies de woorden en tekens die je wilt tonen.

Je gebruikte in de vorige les al een naam als enige inhoud van de formaattekst. Hier combineer je diezelfde techniek met een begroeting. De handeling blijft hetzelfde: de naam wordt gelezen op het moment van de aanroep.

Een berekening als apart argument

Een argument is een waarde of berekening die je aan een aanroep meegeeft. Voor een berekening gebruik je een lege invulplaats {} in de tekst. De berekening zelf staat na de komma, bijvoorbeeld println!("Hierna: {} km", distance + 2);.

Rust rekent distance + 2 uit en gebruikt de uitkomst voor de lege invulplaats. De variabele distance krijgt daardoor geen nieuwe waarde. Met meerdere lege plaatsen volgen de bijbehorende argumenten in dezelfde volgorde na de tekst.

Voorspel de begroeting en beide afstanden voordat je dit programma uitvoert. De laatste aanroep laat twee lege invulplaatsen en hun argumenten naast elkaar zien.

Een bericht over de volgende route
fn main() {
    let walker = "Noor";
    let distance = 6;
    println!("Hoi, {walker}!");
    println!("Hierna: {} km", distance + 2);
    println!("Vandaag: {} km, hierna: {} km", distance, distance + 2);
}
Verwachte uitvoer
Hoi, Noor!
Hierna: 8 km
Vandaag: 6 km, hierna: 8 km
InvulplaatsBijbehorend gegeven
{walker}De bestaande naam walker.
Eerste {} in de laatste aanroepdistance, hier 6.
Tweede {} in de laatste aanroepdistance + 2, hier 8.

Veelgemaakte fout: een berekening tussen accolades schrijven

De korte vorm {walker} is voor een bestaande naam. Je kunt er niet zomaar een rekenuitdrukking van maken. De foutvariant probeert distance + 2 rechtstreeks tussen de accolades in de formaattekst te zetten.

Veelgemaakte fout
fn main() {
    let distance = 6;
    println!("Hierna: {distance + 2} km");
}
Verwachte fout
invalid format string

De compiler meldt invalid format string: de geschreven formaattekst voldoet niet aan de regels. Er verschijnt geen wandelbericht, omdat dit programma niet tot uitvoering komt. Gebruik een lege plaats {} en geef de berekening na de komma mee om dit te herstellen.

Met die scheiding kun je code en tekst ook makkelijker controleren. Lees eerst de zin alsof de invulplaatsen al gevuld zijn. Lees daarna de argumenten om te bepalen of ieder gegeven op de juiste plaats terechtkomt.

Een naam en een volgend lesnummer

De oefening heeft de naam name en het getal lessons al beschikbaar gemaakt. Gebruik de naam in de begroeting. Voor het volgende lesnummer moet je eerst een optelling uitvoeren; kies daarvoor de vorm met de lege invulplaats en een apart argument.

Controleer na uitvoering de twee volledige regels, inclusief spaties en leestekens. Als de compiler de formaattekst afwijst, kijk dan eerst naar de accolades en naar waar de berekening staat. Als het programma wel draait maar een verkeerd getal toont, controleer dan de berekening zelf.

AAN DE SLAG 0/2
1

De eerste stap

Gebruik name om de begroeting Welkom, Sam! op de eerste regel te tonen.

2

Nog een stap verder

Gebruik lessons om Volgende les: 5 op de tweede regel te tonen. Tel er eerst één bij op.

Wat je meeneemt

  • De formaattekst bevat de vaste boodschap en de invulplaatsen.
  • Een bestaande naam mag direct tussen accolades staan.
  • Een berekening geef je als apart argument mee bij een lege invulplaats {}.

Je kunt nu tekst, namen en berekeningen combineren. In een volgende module kies je met voorwaarden welke instructies worden uitgevoerd.

main.rs
UitvoerConsole
›
›_

Hier komt je resultaat.

Voer je code uit en ontdek
wat je hebt gemaakt.

0/2 stappen
EVEN MEEKIJKEN

Bekijk hoe het kan.

Je mag de oplossing bekijken. Deze poging telt dan niet mee als afgeronde les. Met Reset kun je daarna opnieuw zelf oefenen.