鷲ノ巣

C# とか PowerShell とか。当ブログの記事は(特に公開直後は)頻繁に改定される場合があることをご了承ください。

型を定義するために関数を使おう

たまにはライトな話題で行きましょう。

PowerShell では、関数の中に関数を書くことができます。
こんな感じ。

処理の中で、ある構造のデータを配列で持ちたい場合があるとしましょう。
例えば、人のプロフィールを、数人分。
ハッシュテーブルの配列にすると、こんな感じになりますか。

おっと間違えた。
リチャードの名前は Name とすべきところを Neme にしてしまいましたし、メリルの性別は Female のはずが Femare になってしまっています。
でもエラーチェックなんか働きません。

C# だったら匿名型の配列にするでしょうか。その場合は、プロパティ名が間違えているとエラーになります。
性別は enum 型でも定義してやれば間違えません。
が、PowerShellenum を定義するのは面倒くさい。

そこで、こんな風にしてみたらどうでしょうという提案です。

これなら間違える心配はありませんね。

で、この $people 配列が必要なのは特定の関数の中だけなんです、ということであれば、New-Person 関数ごと、その関数の中に閉じ込めてしまえばよろしい。

PowerShell で型を定義するには少々難がありますが、このように関数化すれば、ミスが減らせて良いのではないでしょうか。

…うーむ。「関数内関数を活用しよう」というタイトルより「型を定義する代わりに関数を作ろう」の方が良かった気がしてきたな。まぁいいか。

やっぱりタイトル変えました。