SSブログ

パイプラインにおける 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 でポイントフリースタイルを多用したくなるようなのと似た感覚なのだと思う。


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。