如何解决为什么这不更改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
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。