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
私は何を間違えましたか?
このように呼び出します:
swap ([ref]$a) ([ref]$b)
,
を使用する際の間違いは、PowerShellの Common Gotchason Stack Overflow で説明されています。
ちなみに、PowerShellには値を交換するための特別な構文があり、$ tmpを使用する必要はありません。
$a,$b = $b,$a
まず、あなたはそれを間違っていると言っています。 swapの呼び出しにコンマを入れることは、それらの配列を最初のパラメーターとしてオブジェクトに渡すことを意味します。あなたがそれを修正するとしたら...
swap ([ref]$a) ([ref]$b)
...それでうまくいくでしょう。