filterについては以前もちょっと書いたことがあるがもう一度纏めておく。
パイプライン入力を受け付ける関数を書くときにfunctionとfilterのどちらを使えば良いのか。
そもそも両者はどうちがうのか。
基本的にfunctionはパイプライン入力が複数個あっても一度だけ呼ばれる。
その時のパイプライン入力は$inputで纏めて取得できる。
一方filterの方はパイプライン入力の個数分呼ばれる。
通常は個々の値に対して処理したいことがほとんどであろうから、ここらへんがfilterの存在意義なのであろう。個々のパイプライン入力は$_で参照が可能だ。
functionの方も$inputを回さなくても個々のパイプライン入力を処理することは出来る。
processブロックを作り、その中に処理を書いてあげるだけだ。
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 | function testFunction{ "function called $input" } filter testFilter{ "filter called $_" } function testFunctionWithProcess{ begin{ "function begin called $input" } process{ $input "function process called $_" } end{ "function end called $input" } } "-- testFunction --" 1,2,3 | testFunction "-- testFilter --" 1,2,3 | testFilter "-- testFunctionWithProcess --" 1,2,3 | testFunctionWithProcess |
0 件のコメント:
コメントを投稿