Массив хеш-таблиц не выводится - PullRequest
0 голосов
/ 10 декабря 2018

Это основной вопрос, но я застрял.У меня есть следующий код:

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

Массив создан, но пустой.Я пробовал разделение запятыми:

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

Но это не сработало.Что случилось?

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

полезный ответ gms0ulman предоставляет эффективное решение для построения массива хеш-таблиц.

Для предоставления справочной информации :

  • Назначение переменной, такое как $hashtable1 = ..., является , а не выражением , поэтому оно выдает без вывода , поэтому ваше назначение $array = в конечном итоге содержит пустомассив , учитывая, что @(...) не видел вывода.

  • Однако вы можете заставить операторы присваивания производить вывод, просто заключив их в (...), что превращает их в выражения , которые позволяют назначить переменной и выводить назначенное значение.

  • @(...) - это , а не необходимостроить массивы;вместо этого вы можете использовать ,, оператор построения массива.

Даже если это может и не понадобиться, ниже показано, как построить массив хеш-таблиц и сохранить отдельные хеш-таблицы в выделенных переменных:

$array =
  ($hashtable1 = @{
      Name = "Test1"
      Path = "C:\Test1"
  }),
  ($hashtable2 = @{
      Name = "Test1"
      Path = "C:\Test1"
  })
0 голосов
/ 10 декабря 2018

Вы присваиваете хеш-таблицы в качестве переменных.Выньте присвоение переменной:

$array = @(
    @{
        Name = "Test1"
        Path = "C:\Test1"
    },
    @{
        Name = "Test1"
        Path = "C:\Test1"
    }
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...