配列のflatten

配列において

((1,2), (3,4))→(1, 2, 3, 4)

とflattenするメソッドを追加してみた。

<?xml version="1.0" encoding="utf-8" ?> 
<Types>  
  <Type> 
    <Name>System.Array</Name> 
    <Members> 
      <ScriptMethod> 
        <Name>Flatten</Name> 
        <Script> 
            function _flatten
            {
                $args[0] | % {
                    if($_ -is 'Array')
                    {
                        _flatten $_
                    }
                    else
                    {
                        $_
                    }
                }
            }
            _flatten $this
        </Script> 
      </ScriptMethod> 
    </Members> 
  </Type> 
</Types>

型データディレクトリ$typedirを適当に作成し、上の内容をSystem.Array.ps1xmlで保存し、プロファイルで

Update-Typedata -PrependPath $typedir\System.Array.ps1xml

とすれば使える。

サンプル

> ((1,2),(3,4))[1]
3
4

> ((1,2),(3,4)).Flatten()[1]
2