PowerShell: 連想配列を結合(連結)する
PowerShellで連想配列(ハッシュテーブル)を結合する場合は、 +演算子や+=演算子を使用します。 +演算子は単純な結合、+=演算子は結合+代入です。 それぞれの方法を解説していきます。
+演算子での連想配列の結合
+演算子では、+演算子の左辺の連想配列と右辺の連想配列を結合し、 新たな連想配列を作成します。「連想配列+連想配列」の形式です。 注意点として、キーが重複しているとエラーになります。
次のコードでは、$h1と$h2の2つの連想配列を結合して、 新たな連想配列$h3を作成しています。
$h1 = @{
a = 100
b = 200
}
$h2 = @{c = 300; d = 400}
$h3 = $h1 + $h2
$h3
# 実行結果
Name Value
---- -----
b 200
a 100
d 400
c 300
次のコードのように連想配列リテラルで記述しても構いません。
$h3 = @{a = 100} + @{c = 300}
$h3
# 実行結果
Name Value
---- -----
a 100
c 300
キーの重複はエラー
次のコードでは連想配列のキー"a"が重複しているため、 エラーが発生します。
$h1 = @{a = 100; b = 200}
$h2 = @{c = 300; a = 400}
$h3 = $h1 + $h2
$h3
# 実行結果(エラーメッセージ)
Line |
6 | $h3 = $h1 + $h2
| ~~~~~~~~~~~~~~~
| Item has already been added.
Key in dictionary: 'a' Key being added: 'a'
+=演算子での連想配列の結合+代入
+=演算子は左辺と右辺の連想配列を結合し、
結果を左辺の連想配列に代入します。
「$h1 += $h2」は「$h1 = $h1 + $h2」と同じ意味です。
$h1 = @{a = 100; b = 200}
$h2 = @{c = 300; d = 400}
$h1 += $h2
$h1
# 実行結果
Name Value
---- -----
b 200
a 100
d 400
c 300