У всех есть идеи, почему следующий код может вызвать ошибку, см. Дополнительные комментарии после функции для получения более подробной информации
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".
Я получаю ошибку в разных случаях, я пытался сузить ее до примера, который легко воспроизвести. Похоже, что он меняет хеш-таблицу на массив объектов, и поэтому не возвращает его? Это позволяет мне изменять хэш-таблицу и возвращать ее, но когда я пытаюсь отобразить ее, она меняет ее? Это тот же эффект, который я получаю, когда начинаю добавлять код в функцию вызываемого абонента?