我需要存储在hashtable 2 int变量的Item中。但无法理解如何存储它:
$hash = @{}
if($hash.contains($name) -eq $False){
$value = 1
$arr = @($my_var;$value)
$hash.add($name,$arr)
}else{
$value = $hash.item($name)
$value[1]++ #PROBLEM HERE
$hash.item($name)[0] = $my_var
$hash.item($name)[1] = $value
}
问题是$value[1]
不存在(注1),$value[0]
还包含空格$my_var
和$value
。
注1 - '++'运算符仅适用于数字。操作数是'System.Object []'。
答案 0 :(得分:1)
我不确定我是否理解你的问题。您要更新int
- 值吗?如果是这样,那么你的问题是你覆盖了int
- 存储在$hash.item($name)[1]
中的值,不只是一个int,而是整个数组。你基本上是在创造这个:
$hash.item($name) = @($my_var, $value, @($my_var, $value+1))
您可以通过更新此行来解决此问题:
$hash.item($name)[1] = $value
到
$hash.item($name)[1] = $value[1]
如果$my_var
始终是相同的值,您可以通过替换整个项目来清理它:
$my_var = "test"
$name = "nametest"
#$hash = @{} #ran this first time to create ht before commenting it out to avoid overwriting the ht
if($hash.Contains($name) -eq $False){
$value = 1
$arr = @($my_var;$value)
$hash.add($name,$arr)
}else{
$value = $hash.item($name)
$value[1]++
$hash.item($name) = $value
}