mergeOverwrite と dict による Deep Merge
構造化された Values をプログラムで組み立てます。
「mergeOverwrite と dict による Deep Merge」はCoddyKit上の無料Helm Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはHelm Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Helm Academyコースには全4レッスンが含まれています。
テンプレート内でマップを構築します
テンプレート内でマップを組み立てる必要がある場合があります。dict 関数は、キーと値のペアを交互に指定してマップを作成します。
{{ $cfg := dict "level" "info" "json" true }}マップを組み合わせる理由
チャートのデフォルト値とユーザーによる上書き値があり、それらを1つのマップにまとめたいことがよくあります。それを実現するのが merge です。
浅いマージ
merge 関数は、ソースマップのキーを移行先にコピーしますが、キーがすでに存在する場合は移行先の値を維持します。
{{ $out := merge $user $defaults }}merge は移行先を優先します
merge では、競合するキーについて最初の引数が優先されます。そのため、ユーザー入力でデフォルト値を上書きしたい場合に適しています。
mergeOverwrite の登場
mergeOverwrite 関数は反対に、後のソースマップで移行先を上書きし、値を上に重ねます。
{{ $out := mergeOverwrite $defaults $user }}浅くなく深くマージします
どちらのヘルパーも 再帰的に マージします。入れ子になったマップはサブツリー全体を置き換えるのではなく、キーごとに結合されます。
変更に関する注意
注意してください。merge と mergeOverwrite は、最初の引数をその場で変更します。元の値を保持する必要がある場合は、新しい dict を渡してください。
{{ $base := dict }}{{ $r := mergeOverwrite $base .Values.extra }}階層化されたデフォルト値のパターン
よく使われる pattern は、デフォルトの dict から始めてユーザー値を上に重ねる方法です。これにより、未設定のキーは安全にデフォルトへフォールバックします。
{{ $merged := mergeOverwrite (dict "port" 80) .Values.service }}マージした値を読み取ります
マージ後の結果は通常のマップと同じように扱い、dot または index 関数を使ってキーを取り出します。
{{ $merged.port }}結果をシリアライズします
マージした構造を YAML として出力するには、toYaml にパイプで渡し、nindent を使ってブロックを正しいインデントに配置します。
{{ toYaml $merged | nindent 4 }}1つのキーを取り出します
キー名が動的であったり、特殊な文字を含んでいたりする場合は、ドット記法ではなく index 関数を使ってマップから値を取り出します。
{{ index $merged "log-level" }}理解度チェック
上書きの方向を確認しましょう。
まとめ
マップを構築する dict、移行先のキーを維持する merge、後の値を優先する mergeOverwrite について学びました。どれも深くマージします。🎉
よくある質問
「mergeOverwrite と dict による Deep Merge」レッスンは無料ですか?
はい。「mergeOverwrite と dict による Deep Merge」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Helm Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Helm Academyコースには全4レッスンが含まれています。
「mergeOverwrite と dict による Deep Merge」で何を学びますか?
構造化された Values をプログラムで組み立てます。 ブラウザで直接実行するハンズオンコードでHelm Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Helm Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのHelm Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「mergeOverwrite と dict による Deep Merge」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このHelm Academyレッスンでコードを書いて実行できますか?
はい。すべてのHelm Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- mergeOverwrite と dict による Deep Merge
- tpl:Values の文字列をレンダリングする
- range を使った .Files.Glob のファイルループ
- fail とカスタム検証ガード