gpt4 book ai didi

powershell - 如何在哈希表中查找多值名称?

转载 作者:行者123 更新时间:2023-12-02 07:47:25 24 4
gpt4 key购买 nike

如果我有一个包含多值名称的哈希表,我如何在查找时指定名称?

这里有一些人为的例子......

$unary = @{
$false, "!A";
$true, "A"
}

$unary
Name Value
---- -----
False !A
True A

$unary[$false]
!A
$unary[$true]
A

到目前为止一切顺利。

$binary = @{
($false, $false) = "!A and !B"
($false, $true) = "!A and B"
($true, $false) = "A and !B"
($true, $true) = "A and B"
}

$binary
Name Value
---- -----
{False, True} !A and B
{True, False} A and !B
{True, True} A and B
{False, False} !A and !B

$binary[$false, $true]
//Nothing
$binary[($false, $true)]
//Nothing
$binary[{$false, $true}]
//Nothing
//www.stackoverflow.com... :)

我需要在 $binary[...] 中指定什么来获取值?

最佳答案

您的问题是您使用数组作为哈希表中的键。只是为了说明这里出了什么问题:

PS Home:\> $x=$false,$false
PS Home:\> $y=@($binary.Keys)[0]
PS Home:\> $x
False
False
PS Home:\> $y
False
False
PS Home:\> $x.Equals($y)
False

两个对象也有不同的哈希码。将它们用作哈希表中的键永远不是一个好主意,因为您无法再次提取值,除非使用与您放入哈希表中的完全相同的引用。

更简单的方法可能是使用单个对象作为键:

$binary = @{
0 = "!A and !B"
1 = "!A and B"
10 = "A and !B"
11 = "A and B"
}

或类似的。然后提取

$binary[01]

将按预期生成 "!A and B"

另请注意,列表在相等性方面也会有同样的问题。元组可能有效,但在 .NET 2 中不可用。

关于powershell - 如何在哈希表中查找多值名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5911887/

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