はじめに
最近Azure Pipelineとその縁でPowershellと仲良しこよしになっているなむゆです。
HashTableを扱うにあたって、HashTableに一つ一つのkeyvalueを追加する方法はどこでも解説されているのですが、HashTableにHashTableを足し合わせる方法についてはそこそこ調べても出てこなかったのでメモ書きです。
HashTableにHashTableを足し合わせる
$aと$bはどちらもHashTable型ですが、HashTableは以下のように +
演算子を使うことでHashTable同士を足し合わせることができます。
$a = @{ a="name a" b="name b" } $b =@{ c="name c" d="desperately" } $c= $a+$b # 出力 # Name Value # ---- ----- # d desperately # a name a # c name c # b name b
ただし、キーの値が被っているとエラーとなります。
以下の例だと、c
のキーが重複するため、エラーとなります。
$a = @{ a="name a" b="name b" c="name c" } $b =@{ c="name c" d="desperately" } $c= $a+$b # 出力 # 項目は既に追加されています。辞書のキー: 'c' 追加されるキー:'c' # 発生場所 行:12 文字:1 # + $c= $a+$b # + ~~~~~~~~~ # + CategoryInfo : OperationStopped: (:) [], ArgumentException # + FullyQualifiedErrorId : System.ArgumentException
おわりに
HashTableにHashTableを足し合わせる方法についてはそこそこ調べても出てこなかった・・・と思って今調べたら「ハッシュテーブル同士 加算」あたりで色々出てきました。
ドキュメントにも記述にありますね。
「足し合わせる」よりも「加算」の方が言葉として正確でヒットしやすかったのかもしれません。
Powershellの「~について知りたいことのすべて」シリーズにはいつもお世話になっています。