2011-08-22 36 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

首先,你說錯了。在調用swap中放置一個逗號意味着你將一個數組作爲第一個參數傳遞給對象。如果你要糾正它...

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

......它會然後工作。

+0

您可以通過引用傳遞值類型。 – Rynant

+0

@Rynant:你說得對。我又做了,它沒有抱怨價值類型。不知道我第一次做了什麼不同。 –

20

順便說一句,PowerShell提供了一種特殊的語法來交換價值,沒有必要使用$ TMP:

$a,$b = $b,$a