たまにはライトな話題で行きましょう。
PowerShell では、関数の中に関数を書くことができます。
こんな感じ。
処理の中で、ある構造のデータを配列で持ちたい場合があるとしましょう。
例えば、人のプロフィールを、数人分。
ハッシュテーブルの配列にすると、こんな感じになりますか。
おっと間違えた。
リチャードの名前は Name とすべきところを Neme にしてしまいましたし、メリルの性別は Female のはずが Femare になってしまっています。
でもエラーチェックなんか働きません。
C# だったら匿名型の配列にするでしょうか。その場合は、プロパティ名が間違えているとエラーになります。
性別は enum 型でも定義してやれば間違えません。
が、PowerShell で enum を定義するのは面倒くさい。
そこで、こんな風にしてみたらどうでしょうという提案です。
これなら間違える心配はありませんね。
で、この $people 配列が必要なのは特定の関数の中だけなんです、ということであれば、New-Person 関数ごと、その関数の中に閉じ込めてしまえばよろしい。
PowerShell で型を定義するには少々難がありますが、このように関数化すれば、ミスが減らせて良いのではないでしょうか。
…うーむ。「関数内関数を活用しよう」というタイトルより「型を定義する代わりに関数を作ろう」の方が良かった気がしてきたな。まぁいいか。
やっぱりタイトル変えました。