2011-08-22 19 views
13

PowerShellで単純なスワップ関数を作成しようとしていますが、参照渡しが私にとってうまくいかないようです。これは動作するはずPowerShellが参照渡しで動作しません

function swap ([ref]$object1, [ref]$object2){ 
    $tmp = $object1.value 
    $object1.value = $object2.value 
    $object2.value = $tmp 
} 

$a = 1 
$b = 2 
$a, $b 
swap ([ref]$a) ,([ref]$b) 
$a, $b 

、ない...

Output: 
    1 
    2 
    1 
    2 

私が間違って何をしたのですか?

答えて

3

まず、あなたは間違っていると呼んでいます。スワップの呼び出しにコンマを置くことは、toオブジェクトの配列を最初のパラメータとして渡すことを意味します。あなたがそれを修正するなら...

swap ([ref]$a) ([ref]$b) 

...それはうまくいくでしょう。このような

+0

あなたが参照によって値型を渡すことができます。 – Rynant

+0

@ Rynant:そうです。私はそれをもう一度やりました、そして、それは価値のタイプについて不平を言っていませんでした。初めて何が違ったのか分かりません。 –

20

、PowerShellは値を交換するための特別な構文は、$ TMPを使用する必要はありませんがあります。

$a,$b = $b,$a 
関連する問題