默认情况下,PowerShell哈希表(@{})似乎是string→string的映射。但我希望我的值类型是Int32,以便我可以对其进行计算。

声明哈希表变量时如何指定类型信息?

最佳答案

哈希表将键映射到值。键和值的类型无关紧要。

PS C:\> $ht = @{}
PS C:\> $ht[1] = 'foo'
PS C:\> $ht['2'] = 42
PS C:\> $ht

Name                           Value
----                           -----
2                              42
1                              foo

PS C:\> $fmt = "{0} [{1}]`t-> {2} [{3}]"
PS C:\> $ht.Keys | % {$fmt -f $_, $_.GetType().Name, $ht[$_], $ht[$_].GetType().Name}
2 [String]      -> 42 [Int32]
1 [Int32]       -> foo [String]

如果字符串中有整数,并希望将其分配为整数,则可以在分配时简单地将其强制转换:
PS C:\> $ht[3] = [int]'23'
PS C:\> $ht.Keys | % {$fmt -f $_, $_.GetType().Name, $ht[$_], $ht[$_].GetType().Name}
2 [String]      -> 42 [Int32]
3 [Int32]       -> 23 [Int32]
1 [Int32]       -> foo [String]

关于powershell - 如何为哈希表指定数据类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30935885/

10-11 22:43