为什么这不更改Helm范围循环中变量的值?

问题描述

我具有以下功能:

if (message.content.length < 100) return message.delete()

我用{{- define "myapp.getSubKey" -}} {{- $map := .source }} {{ "Before: " }}{{ $map }} {{- range $key,$value := .keys }} {{- if kindIs "int" $value }} {{- $map := index $map (int $value) }} {{ "After: " }}{{ $map }} {{- end }} {{- end }} {{ $map }} {{- end }}

称呼它

打印输出:

include "myapp.getSubKey" (dict "source" .Values.vars "keys" list(0))

因此您可以看到它正确地向下导航并在Before: [map[name:MYSQL_ROOT_PASSWORD valueFrom:map[secretKeyRef:map[key:db-pass name:db-creds]]] map[name:MYSQL_ROOT_USER valueFrom:map[secretKeyRef:map[key:db-user name:db-creds]]]] After: [map[name:MYSQL_ROOT_PASSWORD valueFrom:map[secretKeyRef:map[key:db-pass name:db-creds]]] [map[name:MYSQL_ROOT_PASSWORD valueFrom:map[secretKeyRef:map[key:db-pass name:db-creds]]] map[name:MYSQL_ROOT_USER valueFrom:map[secretKeyRef:map[key:db-user name:db-creds]]]] 语句中更改了$map,但是当它退出循环时,它又回到了循环之前的状态。

如何更改“全局”值?

解决方法

请尝试在内部=中使用运算符:=而不是赋值运算符if-block。将$map分配给:=时,范围仅限于if-block

{{- define "myapp.getSubKey" -}}
  {{- $map := .source }}
  {{ "Before: " }}{{ $map }}
  {{- range $key,$value := .keys }}
    {{- if kindIs "int" $value }}
      {{- $map = index $map (int $value) }} // <------- here
      {{ "After: " }}{{ $map }}
    {{- end }}
  {{- end }}
  {{ $map }}
{{- end }}

=起支持运算符helm v2.13.0

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...