パイプラインにおける PowerShell の関数 [PowerShell]
PowerShell インアクションを読むと思わずのけぞるような箇所にしばしば出会うが、関数定義内に begin と end が書けるというのもそのひとつだった。
function sum {
begin { $result = 0 }
process { $result += $_ }
end { $result }
}
begin というのは awk の BEGIN で end は awk の END である。上記の関数はパイプライン上で以下のように使える。
PS D:\ps1> 1..10 | sum 55
これを思いついて実際に言語に載せるというのはすごいなあ。
これもそうだけど PowerShell はパイプラインという概念を言語の中心にすえているところがあって、そのため(制御構文は普通に一通りあるのだが)何でもパイプライン上に置きたくなるようなところがある。おそらく Ruby でメソッドチェインをつなげたり Haskell でポイントフリースタイルを多用したくなるようなのと似た感覚なのだと思う。
コメント 0