2023年12月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
無料ブログはココログ

 

« PowerShellでの奇妙な振る舞い | トップページ | 株:現物売り約定(ブリヂストン) »

2015年8月 5日 (水)

覚書:PowerShellの配列を舐めるループについて

PowerShell において、配列を舐める方法はforeach文を使う方法とForEarch-Objectコマンドレット(省略形は、%{ })を使う方法がある。
でも、この2つは等価ではない。

Windows PowerShellコマンド&スクリプティング入門:PowerShellスクリプティングの第一歩(後編) (3/5)に記載があるけれど、foreach文は全部読み込んでからループ、ForEach-Objectコマンドレットは一つずつ処理をするとのこと。

それだけでなく、break文の挙動も違う。
foreach文はbreakで自分のスコープが終了するだけ。外側には影響しない。
ForEach-Objectコマンドレットは、外側にも影響する。

> $a1 = @(1,2,3)
> $a2 = @("a","b","c")
> $a1 | %{ $_; foreach($i in $a2) { $i; break } }
1
a
2
a
3
a
> $a1 | %{ $_; $a2 | ForEach-Object { $_; break } } 1 a > $a1 | %{ $_; $a2 | %{ $_; break } } 1 a

TechNetのForEach-Objectの説明を読むと、最後のほうにエイリアスはforeachって書いてあるけど・・・。

« PowerShellでの奇妙な振る舞い | トップページ | 株:現物売り約定(ブリヂストン) »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: 覚書:PowerShellの配列を舐めるループについて:

« PowerShellでの奇妙な振る舞い | トップページ | 株:現物売り約定(ブリヂストン) »