[PowerShell] #05 - 配列、ハッシュを使おう

ほかのプログラミング言語にも存在する、ちょっと変わった変数の種類である「配列」と「ハッシュ」について勉強していきましょう。


いずれもたくさんのデータをまとめて扱う場合に利用する変数です。

PowerShellにおいては見た目は普通の変数と変わりありませんが、使い方が異なりますので覚えておくと便利でしょう。


配列

さて、なんのことだかという方もいらっしゃるとおもいます。

考え方としてはデータが一列に並べられたものだと思ってください。

どういうことかというと、「1, 2, 3, 4, 5」というのは配列です。

数値で、一列に並んでいます。

なんやそれ、と思うかもしれませんがこういうことです。


PowerShellではさきほどの説明のとおりに変数をつくることができます。

つまり、データが並んでいる状態にラベル付けすることができるのです。

$numbers = 1, 2, 3, 4, 5

配列の先頭(一番左)のデータを見るには、角かっこをつけてゼロ番地を指定します。

$numbers[0]

上記の例は「1」が出力されます。

ということは、1番地だと2、2番地だと3…ということですね。

いくつまで入っているか調べるにはドット記号「.」を挟んで「Count」あるいは「Length」とします。

こうすると、これらは配列の要素の数を返します。

$numbers.Count
$numbers.Length

ここではどちらでも5が返されます。

もしも空っぽの配列を作りたくなったら特殊な書き方をすれば空っぽで用意されます。

$numbers = @()

この状態でさきほどのようにCountやLengthで調べてみてください。

ゼロが出力されるはずです。

なお、最初の「1, 2, 3, 4, 5」は特殊な書き方をしても大丈夫です。

$numbers = @(1, 2, 3, 4, 5)

配列に「もうひとつ要素が必要だった」というときは慌てず「+」で足しこむことができます。

$numbers + 6

これで要素の数は6つになったはずです。


配列にデータを入れて用意したいけど、1から100までなんてダルすぎる!ということもあるかもしれません。

そうしたときは省略しても大丈夫です。ドット2つ連続で最初のデータから最後のデータをつなぎます。

@(1..100)

便利ですね。


ハッシュ

ハッシュは「◯◯といえば××」というようなデータの集まりです。

◯◯の方をキーといい、××のほうを値といいます。

こうしたペアになったデータが集まっています。


少し特殊な書き方になりますが、名前と年齢というキーを持つハッシュは次のようになります。

$user = @{name = "なるーらぼ"; age = 37;}

上記「$user」で名前を見るには以下のようにします。

$user.name
$user["name"]

どちらも「なるーらぼ」を出力します。

もしもラベル付けする内容を更新するのであれば、上記にイコール記号で内容を指定すれば大丈夫です。

$user.name = "nalu-labo"
$user["name"] = "nalu-labo"


配列と同様に、空っぽのハッシュを用意することもできます。

$user = @{}

ここへ新しくキーと値のペアを登録するには存在しないキーを指定して更新するときと同様にします。

$user.email = "nalu.labo@gmail.com"

あるいは、ドットを挟んで「Add」というものにキーと値のペアを使います。

$user.Add("email", "nalu.labo@gmail.com")

逆に削除したくなったら存在するキーを指定して「Remove」とします。

$user.Remove("age")

なお、すでに存在しているキーを指定してAddをするとエラーになります。

キーがすでに存在しているか調べるには「Contains」を使います。

$user.Contains("email")


次回は計算や条件分岐についてお話しします。



もんが(なるーらぼ)

個人でプログラミングの学習サイト「なるーらぼ」を運営しています。
https://nalu-labo.amebaownd.com
PowerShell入門の電子書籍2冊も出版しています。
http://www.amazon.co.jp/dp/B017LJOCJ2

なるーらぼ

忙しい非プログラマに贈るプログラミング学習サイトです。 3分動画を使ったPowerShellや要件定義の入門講座、パソコン活用のtipsを公開しています

0コメント

  • 1000 / 1000