Code Aquarium

minazoko's blog -*- 水底のブログ -*-

(PowerShell)配列の先頭要素だけ取り出す

分配束縛っぽい記述を使うと、配列の先頭要素と残りを分割できます。

$x = 1..5
$y,$z = $x
$y #=> 1
$z #=> 2 3 4 5

Lispの car と cdr の動作ですね。これは再帰処理と相性が良い形です。
例えば、PowerShellのパス文字列連結コマンドレット Join-Path は2つの引数しか受け付けませんが、3つ以上のパス連結関数も簡単に書けます。

function Join-Paths ([string[]] $Paths) {
    $parent, $rest = $Paths
    if(-not $rest){
        $parent
    }else{
        Join-Path $parent (Join-Paths $rest)
    }
}

使用例

PS C:\> Join-Paths hoge, piyo, fuga
hoge\piyo\fuga

もとの Join-Path と異なり、引数は配列なのでカンマが必要です。