2012年6月26日火曜日

◆Foreachステートメントでnullオブジェクトを列挙対象外にする(V3)

PS>function f1{1,2,3}
PS>$r = f1
PS>foreach($i in $r){"Result is $i"}
Result is 1
Result is 2
Result is 3

この様な処理があったとして、「f1」が「Null」を返すとこんな感じになる。

PS>function f1{$null}
PS>$r = f1
PS>foreach($i in $r){"Result is $i"}
Result is

この結果はあまり意味がないので出力を抑止したいというケースが多いのだろう。

PS>function f1{$null}
PS>$r = f1
PS>if($r){foreach($i in $r){"Result is $i"}}
PS>

V3では自分で条件判定せずともNullに対する列挙を回避してくれるようだ。
(V3)

PS>function f1{$null}
PS>$r = f1
PS>foreach($i in $r){"Result is $i"}
PS>

ただし、使い方は若干注意が必要なようで以下の様にするとうまくいかない。(これが意図した結果なのかどうかは判らないが)
(V3)

PS>function f1{$null}
PS>foreach($i in f1){"Result is $i"}
Result is

こんな時は以下のようにしてあげると良さそうだ。
(V3)

PS>function f1{$null}
PS>foreach($i in (f1)){"Result is $i"}
PS>

0 件のコメント:

コメントを投稿