我正在尝试将用户输入传递到hashTable,我正在尝试这样做。
$someHash =
@{
1 = "one";
2 = "two";
3 = "three"
}
$x = Read-Host "enter 1,2,3"
Write-Output($someHash.$x)
由于某些原因,$someHash.$x
和$someHash[$x]
返回null,但$x
具有它的值。
当我硬编码键时,我也可以从映射中获取值。不确定我做错了什么。
正在添加到地址注释。我也试过选角,结果也一样。
$someHash.[int]$x
$someHash[[int]$x]
[int]$x = Read-Host "enter 1,2,3"
我还使用字符串作为键,使用单引号和双引号。同样的结果。
使用字符串键,您不需要将Read-Host
的结果转换为int。
注意,如果以下内容不起作用,很可能是因为$x
在之前受到类型约束([int]$x
(,请使用Remove-Variable x
或重新启动PowerShell会话。
$someHash =
@{
'1' = "one";
'2' = "two";
'3' = "three"
}
$x = Read-Host "enter 1,2,3"
$someHash[$x] # => Works (Recommended)
$someHash.$x # => Works
使用int键,您需要将Read-Host
的结果类型约束为int:
$someHash =
@{
1 = "one";
2 = "two";
3 = "three"
}
[int]$x = Read-Host "enter 1,2,3"
$someHash[$x] # => Works (Recommended)
$someHash.$x # => Works