微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决为什么这不更改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 举报,一经查实,本站将立刻删除。