Definindo o escopo de um bloco com with
Restrinja o ponto a uma subárvore e conheça suas armadilhas.
Definindo o escopo de um bloco com with é uma aula grátis de Helm Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Helm Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Helm Academy inclui 4 aulas no total.
Pare de repetir caminhos longos
Digitar .Values.image.repository repetidamente fica trabalhoso. A ação with restringe o ponto a uma subárvore para que você possa escrever caminhos mais curtos.
A ação with
Um bloco with começa com {{ with SOMETHING }} e termina com {{ end }}. Dentro dele, o ponto é redefinido para o que você passou.
{{ with .Values.image }}
repository: {{ .repository }}
tag: {{ .tag }}
{{ end }}O ponto entra
Uma vez dentro do bloco, .repository significa .Values.image.repository. A palavra-chave with vincula novamente o ponto à subárvore, encurtando todos os caminhos abaixo dela.
image:
repository: nginx
tag: "1.27"Ele também funciona como proteção
Se o valor estiver vazio ou ausente, with ignorará todo o bloco. Assim, ele restringe o ponto e também funciona como um if ao mesmo tempo. 🛡️
Adicionando um else
Assim como if, with aceita um ramo else. O else é renderizado quando o valor está vazio, oferecendo uma alternativa organizada para configurações opcionais.
{{ with .Values.resources }}
resources:
{{ toYaml . | indent 2 }}
{{ else }}
# no resources set
{{ end }}A armadilha do escopo
Aqui está a armadilha: dentro de with, o ponto deixa de ser a raiz. Portanto, .Release.Name falha, pois Release não existe nessa subárvore.
Acesse a raiz com $
Para usar valores da raiz dentro de with, prefixe-os com $. O cifrão sempre aponta para o contexto raiz original, independentemente da profundidade.
{{ with .Values.image }}
name: {{ $.Release.Name }}
image: {{ .repository }}
{{ end }}Mantenha os blocos pequenos
Como with altera o ponto, blocos grandes ficam confusos rapidamente. Mantenha as seções with curtas para que fique sempre claro para onde o ponto aponta.
with versus if
Use if quando quiser apenas testar um sinalizador e use with quando também quiser entrar nesse valor. with altera o ponto; if o mantém.
Visualize o escopo
Não tem certeza do que o ponto contém? Renderize com helm template e leia a saída, ou imprima o escopo ao depurar um bloco with complicado.
helm template ./mychartAninhando blocos with
Você pode aninhar um with dentro de outro para se aprofundar. Cada nível move o ponto um passo adiante, portanto acompanhe onde você está.
{{ with .Values.image }}
{{ with .pullSecrets }}
# . is now pullSecrets
{{ end }}
{{ end }}Verificação rápida
Dentro de um bloco {{ with .Values.image }}, você tenta ler .Release.Name, mas ele está vazio.
Recapitulação
Agora você sabe definir o escopo do ponto com with, obter uma proteção automática contra valores vazios, adicionar uma alternativa else e alcançar a raiz com $. Modelos mais limpos! 🎯
Perguntas Frequentes
A aula “Definindo o escopo de um bloco com with” é grátis?
Sim — o texto completo de “Definindo o escopo de um bloco com with” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Helm Academy, atualize para CoddyKit PRO. O curso de Helm Academy inclui 4 aulas no total.
O que vou aprender em “Definindo o escopo de um bloco com with”?
Restrinja o ponto a uma subárvore e conheça suas armadilhas. Você pratica Helm Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Helm Academy?
Nenhuma experiência prévia é necessária. Helm Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Definindo o escopo de um bloco com with”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Helm Academy?
Sim. Cada aula de Helm Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Blocos condicionais com if e else
- Veracidade e operadores em condições
- Percorrendo listas e mapas com range
- Definindo o escopo de um bloco com with