powershellの勉強の一環で、クラスを自分で定義して使ってみた。
例として、Personクラスを定義して、そのクラスから生成したオブジェクトに、Name、Age、Addressをセットして、Age でソートして表示させてみた。
今回、Personオブジェクトにセットする値は、以下のファイルから読み込むものとする。
入力ファイル
Taro 30 東京 Jiro 29 大阪 Saburo 28 京都
# 入力ファイル $inputFile = $Args[0] $persons = @(); foreach ($line in Get-Content -Encoding UTF8 $inputFile) { # 入力ファイルが UTF-8 でエンコードされていたとする。 $items = $line.split("`t") # タブで分割 $person = New-Object Person($items[0], $items[1], $items[2]); # person オブジェクトを生成 $persons += $person } $persons = $persons | Sort-Object -Property Age # person オブジェクトを年齢でソート(昇順) foreach ($person in $persons) { Write-Output $person.Name } # Personクラスの定義 class Person { [string] $Name [int] $Age [string] $Address # コンストラクタ Person ([string] $name, [int] $age, [string] $address) { $this.Name = $name $this.Age = $age $this.Address = $address } }
上記を実行すると、
Saburo Jiro Taro
と出力される。(意図通り、Ageで昇順にソートされている。)
powershell では、上記のようにクラスを簡単に定義して使えるので、言語がデフォルトで持っているデータ構造で合う用途のものがなければ、積極的に独自クラスを使っていきたい。