Helm Academy · Lektion

Bevara rotpunkten inuti range

Använd en sparad rotreferens inuti loopar

Lektion 2 av 413 steg

Bevara rotpunkten inuti range är en gratis lektion i Helm Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Helm Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Helm Academy innehåller totalt 4 lektioner.

Punkten kan flytta sig

Inuti en range-loop slutar punkten att betyda chartets rot och pekar i stället på det aktuella elementet. Det här förvirrar många som skriver mallar för första gången.

Varför det är ett problem

När punkten har bundits om fungerar uttryck som .Values eller .Release inte längre inuti loopen, eftersom rotkontexten inte längre är punkten.

Fånga roten först

Lösningen är enkel: spara rotpunkten i en variabel före loopen. Nå sedan den ursprungliga kontexten via variabeln inuti range.

{{ $root := . }}

Använd den sparade roten

Inuti loopen ändrar Ni alla sökvägar som gäller hela chartet så att de går via variabeln. Skriv $root.Values i stället för .Values för att lämna den lokala punkten.

{{ range .Values.items }}
release: {{ $root.Release.Name }}
{{ end }}

Den lokala punkten fungerar fortfarande

För själva loopelementet fortsätter Ni att använda den vanliga punkten. Inuti range är punkten det aktuella elementet, vilket är precis vad Ni behöver där.

{{ range .Values.ports }}
- port: {{ . }}
{{ end }}

Blanda element och rot

Verkliga mallar behöver ofta båda samtidigt: elementet från punkten och ett chartvärde från roten. Genom att spara $root kan Ni referera till båda på ett tydligt sätt.

{{ $root := . }}
{{ range .Values.hosts }}
host: {{ . }}.{{ $root.Values.domain }}
{{ end }}

Ett vanligt namnval

Många charts kallar den här variabeln $root eller $top, men namnet väljer Ni själv. Det viktiga är att fånga punkten innan range binder om den.

range med index och värde

Formen med två variabler binder indexet och värdet direkt, så punkten är ledig. Trots det är det fortfarande säkrast att fånga roten.

{{ range $i, $v := .Values.ports }}
- {{ $i }}: {{ $v }}
{{ end }}

Samma fälla inuti with

Även with-blocket binder om punkten till ett delträd. Samma knep med att fånga roten räddar era chartövergripande referenser även där.

Testa loopens resultat

Rendera chartet och granska loopen. helm template visar om varje iteration hämtade rotvärdena på det sätt Ni förväntade Er.

helm template ./mychart

Fånga innan Ni går in

Ordningen spelar roll: tilldela $root := . utanför loopen. Om Ni fångar värdet inuti range är punkten redan ombunden, så Ni sparar fel värde.

Snabbkontroll

Inuti en range-loop returnerar {{ .Values.port }} plötsligt ingenting.

Sammanfattning

Ni har lärt Er att range binder om punkten, att $root := . sparar den ursprungliga kontexten och att den lokala punkten förblir loopelementet. 🔁

Gratis att börja

Lär dig YAML med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
30
Lektioner
120

Vanliga frågor

Är lektionen ”Bevara rotpunkten inuti range” gratis?

Ja – hela texten till ”Bevara rotpunkten inuti range” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Helm Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Helm Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Bevara rotpunkten inuti range”?

Använd en sparad rotreferens inuti loopar Ni övar på Helm Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Helm Academy?

Du behöver inga förkunskaper. Utbildningen i Helm Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Bevara rotpunkten inuti range”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Helm Academy-lektionen?

Ja. Varje Helm Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Tilldela templatevariabler
  2. Bevara rotpunkten inuti range
  3. nindent jämfört med indent i praktiken
  4. Felsök blanksteg i renderad output
← Tillbaka till Helm Academy