落とし穴に立て札を立てるが如く

ハマりどころの解決が少しでも早くなることを願って書いていきます

【小ネタ】PowershellでHashTableにHashTableを足す

f:id:nam_yu_sql:20210328183448j:plain

はじめに

最近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の「~について知りたいことのすべて」シリーズにはいつもお世話になっています。

参考