3
任何人有任何想法,爲什麼下面的代碼會產生一個錯誤,詳細信息請參閱PowerShell的錯誤返回哈希表
功能後附加註釋function callee ([Hashtable]$arg0) {
[Hashtable]$hashtable = @{}
$hashtable = $arg0
$hashtable.add('passed', $True)
# $hashtable ######## toggle this line
$type = $hashtable.GetType()
Write-Host "$type"
return $hashtable
}
function caller {
[Hashtable]$hashtable = @{'00'='0'}
$hashtable = callee $hashtable ##### returns error here
$hashtable.add('returned', $True)
$hashtable
}
caller
錯誤消息: 不能轉換「System.Object的[]」類型「System.Object []」的值鍵入「System.Collections.Hashtable」。
我收到各種實例的錯誤,我試圖縮小到一個很容易重現的例子。它看起來像是將哈希表更改爲對象數組,這就是爲什麼它不會返回它?它允許我修改哈希表並返回它,但是當我嘗試顯示它時,它會改變它?當我開始向被調用函數添加代碼時,這與我獲得的效果是一樣的嗎?
類似的問題在這裏http://stackoverflow.com/questions/2158786/calling-echo-inside-a-function-pre-pends-echo-string-to-return-value-in-powershel – 2010-09-19 03:59:27
同意。我建議不要在PowerShell中使用成語'return',因爲它具有誤導性。它在功能上等同於'Write-Output ; return'。最好把'$ hashtable'作爲函數的最後一行,並稱它很好(就像* caller *函數一樣)。 –
2010-09-19 06:20:27