ようへいの日々精進XP

よかろうもん

PowerShell の関数で複数の返り値をハンドリングする→複数の値を返すことは出来ないということを教えて頂きました

ども、かっぱです。

2016/04/28 追伸

stknohg.hatenablog.jp

上記の記事にてご指摘頂きました。有難うございますm(__)m。

記事を読ませて頂いて、自分には以下の点について認識に誤りがあったと考えています。

  • そもそも、PowerShell において関数から複数の戻り値を受け取ることが出来ない(一つの返り値しか返せない)
  • 関数から複数の値を返却する場合には、カンマ区切りの単一の配列として返却される(← について単一の配列という認識が無かった)

誤解を招くような情報を掲載してしまいお恥ずかしい限りですが、ずっと誤った認識でいるところでしたので本当に有難うございました。

tl;dr

PowerShell で関数の戻り値が複数ある場合、呼び出し側はどんな風に複数の返り値を受け取れるのかなと思って調べたら簡単だったけどメモ。


メモ

以下のように

function komanechi() {
  return "foo", "bar", "baz"
}

$hoge = komanechi

$hoge[0]
$hoge[1]
$hoge[2]

単一の配列として取得できるので添字を指定してそれぞれの返り値を取得できる。

実行すると...

以下のように出力される。

PS C:\Users\kappa\Documents\WindowsPowerShell> .\xxxxxx.ps1
foo
bar
baz

ちなみに、配列の要素数を取得したい場合には...ご想像通り Length メソッド(と呼ぶのか...?)を指定すれば良さそう。

function komanechi() {
  return "foo", "bar", "baz"
}

$hoge = komanechi

$hoge.Length
$hoge[0]
$hoge[1]
$hoge[2]

実行すると以下のように。

PS C:\Users\kappa\Documents\WindowsPowerShell> .\xxxxxx.ps1
3
foo
bar
baz

おお。


以上

メモでした。PowerShell 奥深い。