PowerShellの講習を受けてて、他の受講者から「固定長の二次元配列を生成、初期化するには?」みたいな質問が出てたので、考えてみた。習った範囲では...
- 配列は基本的には固定長で、要素数の外をインデックスで指定するとエラーになる
- インクリメント演算(
$array += $element
)すると最後に追加されて配列長が伸びる。
...だったので、その範囲で教わった命令だけ使ってできるのはこんな感じか。
PS C:\usr\powershell> $dim=(5,3);
PS C:\usr\powershell> $myArray=@(); 0..($dim[0]-1) | %{$myArray+=$null; $myArray[-1]=@(); 0..($dim[1]-1) | %{$myArray[-1] += $null} }
%
はforeach
の略記。$null
はNull値が入った特殊変数。
配列長を見ることで結果確認とする。
PS C:\usr\powershell> $myArray.count
5
PS C:\usr\powershell> $myArray[0].count
3
なんとなくshell芸やPerlのone liner的な変態っぽさを感じるのだけど、スクリプト環境で固定長二次元配列初期化済みというリクエストがそもそも変態っぽい気もする。あまり使い道を思いつかない。