クラスというのは(また語弊があると言われそうですが…)、
プログラマが楽するために使うものです。例えば、
Car(車)
というクラスを作り、
Car.Speed = 50
Car.Run
とすると、50km/hで車が走ることにする。
Carというクラスの中身については、他の人に作らせるか、作って忘れるかで、
メンテナンスはなるべくやりたくない、それがクラスの肝です。
さて、本題です。PowerShellはスクリプト言語で、クラスと無関係そうですが、オブジェクト指向であり(ここがコマンドプロンプトやbashより進化している部分)、クラスも十分使えます。
今回は、設定ファイルの保存等に使うことを想定した、xmlファイルの作成・キー追加のクラスを作っていきます。
PowerShellコード↓
class xmlFile { $newFile; # ->newFileNameにしてしまいそうだが、そこはオブジェクト志向で… xmlFile($setFileName){ $this.newFile =New-Item $setFileName -type file -Force; Write-Output '<?xml version="1.0" encoding="UTF-8" ?>' | Add-Content $this.newFile -Force } add($key, $val){ Write-Output "<$key>$val<⁄$key>" | Add-Content $this.newFile -Force } } $xf = New-Object xmlFile("$PSScriptRoot\test.xml"); $xf.add("testKey1", "testVal1"); $xf.add("testKey2", "testVal2");
↓出力(スクリプトと同じ場所に、test.xml)
※一応xmlのフォーマットに準じているので、他のプログラムのXMLパーサーが使える筈
クラスの宣言
class クラス名で宣言します。同名のメソッドが自動的にコンストラクタになります。ここではファイル名を指定すると、ファイルが新規作成されるようにしました。
メソッド
メソッドはaddのみ。重複キーの処理や、System.Xml.XmlWriterを使った書き込みもいいと思います。でも結構コードが煩雑になります。
クラスの使用
$変数 = New-Object クラス名 でクラスが生成されます。
その他
New-Itemは新たなファイルやディレクトリを作成する際に使います。
Write-Output をパイプで Add-Content に渡すと、ファイルにテキストを追記できます。この際、改行が自動的に入ることは便利ですが、意図しない場合は注意が必要です。
0 件のコメント:
コメントを投稿