【问题标题】:Powershell: Adding element to hashtable failedPowershell:将元素添加到哈希表失败
【发布时间】:2016-02-06 02:25:53
【问题描述】:
PS C:\Users\Hind> $b=@{}
PS C:\Users\Hind> $b+={k="a";v="b"}
A hash table can only be added to another hash table.
At line:1 char:1
+ $b+={k="a";v="b"}
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : AddHashTableToNonHashTable

为什么会失败?如何成功地将一个元素添加到哈希表?

【问题讨论】:

    标签: powershell hashtable element


    【解决方案1】:

    初始化哈希表应该使用圆括号而不是大括号

    $b=@()
    $b+=@{k="a";v="b"}
    

    【讨论】:

      【解决方案2】:

      更正,此操作失败,因为您缺少 @{k="a";b="b"} 前面的 @ 字符

      PS C:\Users\Hind> $b=@{} PS C:\Users\Hind> $b+=@{k="a";v="b"}

      @{} 正在声明一个新的哈希表。 {} 是一个脚本块。他们不一样。

      【讨论】:

      • 那么,我可以将一个哈希表附加到另一个哈希表吗?有这样的语法吗?我不确定 Powershell 是否支持任何类型的运算符重载?
      • {} 只是 PowerShell 中没有 @{} 的闭包,因此如果省略 @,则操作数的类型不同。
      • 我试过了:D:\> $myhash=@{k1="va1";k2="val2"} PS D:\> $myhash+={k3="val3"} 哈希表只能添加到另一个哈希表。还是不行?
      • $myhash+=@{k3="val3"}
      • @{} = 声明一个新的哈希表。 {} 是一个脚本块。它们不一样。
      猜你喜欢
      • 2021-10-21
      • 2021-04-04
      • 1970-01-01
      • 2015-12-03
      • 2020-04-19
      • 2023-04-08
      • 2020-11-17
      • 2016-10-26
      • 2017-04-12
      相关资源
      最近更新 更多