哈希表数组未输出

时间:2018-12-10 12:42:22

标签: powershell

这是一个基本问题,但我被困住了。我有以下代码:

$array = @(
    $hashtable1 = @{
        Name = "Test1"
        Path = "C:\Test1"
    }
    $hashtable2 = @{
        Name = "Test1"
        Path = "C:\Test1"
    }
)

该数组已创建但为空。我尝试了逗号分隔:

$hashtable1 = @{}, $hashtable2 = @{}

但是这没有用。怎么了?

2 个答案:

答案 0 :(得分:3)

您正在将哈希表分配为变量。取出变量分配:

    s1 = len(self.Seq1)
    s2 = len(self.Seq2)
    self.M  = [[0 for x in range(s1)] for y in range(s2)]
    self.Ix = [[0 for x in range(s1)] for y in range(s2)]
    self.Iy = [[0 for x in range(s1)] for y in range(s2)]
    for i in range(s1):
        for j in range(s2):
            if i == 0 and j != 0:
                self.M[i][j]= - math.inf #Error in this line

            if i != 0 and j == 0:
                self.M[i][j]= - math.inf

答案 1 :(得分:1)

gms0ulman's helpful answer为构建哈希表数组提供了有效的解决方案。

要提供一些背景信息

  • 诸如$hashtable1 = ...之类的变量赋值不是表达式,因此它不会产生无输出,这就是为什么您的$array =假设@(...)没看到输出,分配最终包含一个空数组

  • 但是,您可以简单地将赋值语句括在(...)中,使赋值语句产生输出,从而将它们转换为表达式,从而允许您将变量赋给变量并输出分配的值。

  • 构造数组不需要
  • @(...) ;相反,您可以使用数组构造运算符,

尽管可能不需要,但下面的示例演示了如何构造哈希表数组 以及如何将各个哈希表保存在专用变量中:

$array =
  ($hashtable1 = @{
      Name = "Test1"
      Path = "C:\Test1"
  }),
  ($hashtable2 = @{
      Name = "Test1"
      Path = "C:\Test1"
  })