Подтвердить что ты не робот

PowerShell не возвращает пустой массив в виде массива

Учитывая, что это работает:

$ar = @()
$ar -is [Array]
  True

Почему это не работает?

function test {
    $arr = @()
    return $arr
}

$ar = test
$ar -is [Array]
  False

То есть, почему не пустой массив, возвращаемый из тестовой функции?

4b9b3361

Ответ 1

Ваша функция не работает, потому что PowerShell возвращает все не захваченные потоки вывода, а не только аргумент инструкции return. Пустой массив искажается в $null в процессе. Однако вы можете сохранить массив при возврате добавив его к оператору построения массива (,):

function test {
  $arr = @()
  return ,$arr
}