alp*_*dev 3 powershell return hashtable
任何人都有任何想法为什么以下代码会产生错误,请参阅函数后的其他注释以获取更多详细信息
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
Run Code Online (Sandbox Code Playgroud)
错误消息:无法将"System.Object []"类型的"System.Object []"值转换为"System.Collections.Hashtable"类型.
我收到了各种情况的错误,我试图将其缩小到一个易于重现的例子.看起来它正在将哈希表更改为对象数组,这就是为什么它不会返回它?它允许我修改哈希表并返回它但是当我尝试显示它时会改变它吗?这与我开始向被调用者函数添加代码时获得的效果相同?
当您取消注释时,# $hashtable您正在从函数中输出两个东西.该函数的结果是它的所有"输出",PowerShell将自动将多个输出包装到一个数组中.return语句是一种短路方便,不应与从函数返回值的唯一方法混淆.
| 归档时间: |
|
| 查看次数: |
6054 次 |
| 最近记录: |