share facebook facebook2 twitter menu hatena pocket slack

2016.04.26 TUE

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

川原 洋平

WRITTEN BY川原 洋平

ども、かっぱです。

2016/04/28 追伸

PowerShellの多値返却と多重代入について - 素敵なおひげですね
cloudpackさんのこの記事とその元記事を見て結構誤解されてるんだなぁと思ったのでこのエントリを書きます。 blog.cloudpack.jp inokara.hateblo.jp PowerShellの多値返却 まず、PowerShellは関数の多値返却はできません。 簡単な例を以下に示します。 # # 多値返却...

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:UserskappaDocumentsWindowsPowerShell> .xxxxxx.ps1
foo
bar
baz

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

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

$hoge = komanechi

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

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

PS C:UserskappaDocumentsWindowsPowerShell> .xxxxxx.ps1
3
foo
bar
baz

おお。

以上

メモでした。PowerShell 奥深い。

元記事はこちら

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