Delimitar un bloque con with
Reduzca el punto a un subárbol y conozca sus inconvenientes
Delimitar un bloque con with es una lección gratuita de Helm Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Helm Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Helm Academy incluye 4 lecciones en total.
Deje de repetir rutas largas
Escribir .Values.image.repository una y otra vez resulta engorroso. La acción with reduce el punto a un subárbol para que pueda escribir rutas más cortas.
La acción with
Un bloque with comienza con {{ with SOMETHING }} y termina con {{ end }}. Dentro de él, el dot se restablece a lo que haya pasado.
{{ with .Values.image }}
repository: {{ .repository }}
tag: {{ .tag }}
{{ end }}El punto se desplaza hacia dentro
Una vez dentro, .repository significa .Values.image.repository. La palabra clave with reasigna el punto al subárbol y acorta todas las rutas que dependen de él.
image:
repository: nginx
tag: "1.27"También sirve como protección
Si el valor está empty o no existe, with omite todo su bloque. Por tanto, limita el ámbito del punto y actúa al mismo tiempo como un if. 🛡️
Añadir un else
Al igual que if, with acepta una rama else. else se renderiza cuando el valor está vacío, lo que le proporciona una alternativa ordenada para la configuración opcional.
{{ with .Values.resources }}
resources:
{{ toYaml . | indent 2 }}
{{ else }}
# no resources set
{{ end }}La trampa del ámbito
Esta es la trampa: dentro de with, el punto ya no representa la raíz. Por eso .Release.Name falla, porque Release no se encuentra dentro de ese subárbol.
Volver a la raíz con $
Para usar valores de la raíz dentro de with, añádales el prefijo $. El signo de dólar siempre apunta al contexto raíz original, sin importar a qué profundidad se encuentre.
{{ with .Values.image }}
name: {{ $.Release.Name }}
image: {{ .repository }}
{{ end }}Mantener pequeños los bloques
Como with cambia el significado del punto, los bloques grandes se vuelven confusos rápidamente. Mantenga cortas las secciones with para que resulte evidente a qué apunta el punto.
with frente a if
Use if cuando solo quiera comprobar una condición, y use with cuando también quiera entrar en ese valor. with cambia el punto; if lo mantiene sin cambios.
Inspeccionar el ámbito
¿No está seguro de qué contiene el punto? Renderice con helm template y lea la salida, o imprima el ámbito mientras depura un bloque with complicado.
helm template ./mychartAnidar bloques with
Puede anidar un with dentro de otro para profundizar. Cada nivel desplaza el punto un paso más hacia abajo, así que debe controlar en todo momento dónde se encuentra.
{{ with .Values.image }}
{{ with .pullSecrets }}
# . is now pullSecrets
{{ end }}
{{ end }}Comprobación rápida
Dentro de un bloque {{ with .Values.image }}, intenta leer .Release.Name y está vacío.
Resumen
Ahora puede cambiar el ámbito del punto con with, obtener una comprobación automática de valor vacío, añadir una alternativa con else y volver a la raíz con $. ¡Plantillas más limpias! 🎯
Preguntas frecuentes
¿La lección «Delimitar un bloque con with» es gratis?
Sí — el texto completo de «Delimitar un bloque con with» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Helm Academy, actualiza a CoddyKit PRO. El curso de Helm Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Delimitar un bloque con with»?
Reduzca el punto a un subárbol y conozca sus inconvenientes Practicas Helm Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Helm Academy?
No se requiere experiencia previa. Helm Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Delimitar un bloque con with»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Helm Academy?
Sí. Cada lección de Helm Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Bloques condicionales con if y else
- Valores de verdad y operadores en condiciones
- Recorrer listas y mapas con range
- Delimitar un bloque con with