gpt4 book ai didi

powershell - 关于迭代的哈希表与自定义对象数组

转载 作者:行者123 更新时间:2023-12-03 08:28:17 24 4
gpt4 key购买 nike

我经常编写事物列表并对它们进行枚举以执行一些获取/设置。

我讨厌枚举哈希表,因为每当我必须这样做时,我都必须向后弯曲才能使用 hashtable对象。

$hashtablelistofitems = @{}

$hashtablelistofitems.add("i'm a key", "i'm a value")

foreach ($item in $hashtablelistofitems.keys) {
$item
$hashtablelistofitems.item($item)
}

相反,我通常会恢复使用具有两个音符属性的自定义对象的一维数组。
$array = @()

$listofitems = "" | select key,value

$listofitems.key = "i'm a key"
$listofitems.value = "i'm a value"

$array += $listofitems

foreach ($item in $listofitems) {
$item.key
$item.value
}

为什么我应该使用 hashtable过这个方法?仅仅因为它只保证每个键有一个值?

最佳答案

如果要存储键值列表而不创建包含具有两个属性(键/值)的自定义对象的数组,则应使用哈希表,主要有两个原因:

  • 您可能希望将哈希表传递给需要哈希表的函数。
  • Hashtable 是用户知道的内置 PowerShell 类型。您的第二种方法对于其他用户来说更难阅读/维护。

  • 注:
    您可以通过调用 GetEnumerator() 以与您的方法几乎相同的方式迭代哈希表。功能:
    foreach ($item in $listofitems.GetEnumerator()) {
    $item.key
    $item.value
    }

    此外,哈希表附带了您可能想要使用的方便方法:
    @{} | Get-Member | Where-Object MemberType -eq Method | Select Name

    输出:
    Name             
    ----
    Add
    Clear
    Clone
    Contains
    ContainsKey
    ContainsValue
    CopyTo
    Equals
    GetEnumerator
    GetHashCode
    GetObjectData
    GetType
    OnDeserialization
    Remove
    ToString

    关于powershell - 关于迭代的哈希表与自定义对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44075192/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com