LoginSignup
1
1

More than 3 years have passed since last update.

Powershellでflattenっぽいことをやる

Last updated at Posted at 2019-05-27

はじめに

Powershellでflattenをしたかったのですが、functionがありませんでした。
ForEach-Objectであっさり代替処理ができたので残しておきます。

実装

flatten
$IMAGE_EXTENSIONS = @("*.jpg", "*.png")
$OTHER_EXTENSIONS = @("*.pdf")

# 平坦化した配列 $EXTENSIONS を作成する
$EXTENSIONS = New-Object System.Collections.ArrayList
foreach ($array in @($IMAGE_EXTENSIONS, $OTHER_EXTENSIONS)) {
    $array | ForEach-Object { $EXTENSIONS.add($_) | Out-Null }
}

たった2つのarrayですが、arrayが増えても対応できるようにforeachしました。

利用頻度が高い場合、function化すべきですが、外側でaddしないといけないので微妙だなぁと思いました。
書き方が冗長なのと、ぱっと見でflatten感がありません。
function化したり、method化すれば、その辺りはかなり良くなると思います。

追記

@nukie_53 さんよりコメントを頂き追記

大変すばらしい書き方だと思います。シンプルっていいですね。
基本的には、こちらの書き方を使うべきだと思います。
間違えちゃう人もいそうなので、カンマをつけない旨、しっかりコメントで残して使っていきたいサンプルですね。

シンプル版
$EXTENSIONS = @( #,カンマは付けない、改行で区切る
    $IMAGE_EXTENSIONS
    $OTHER_EXTENSIONS
    # 必要に応じて追記
) # -> System.Object[]
1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1