PowerShell: разница [массив] против [массив []] - PullRequest
1 голос
/ 22 сентября 2019

Мне нужно объявить параметр массива в вызываемом скрипте PS.Массив, поступающий из скрипта вызывающего / исходного кода, находится в хеш-таблице:

$Array = @(1, 2, 3)
$myHashTable = @{myArr = $Array}

Вызов: Z: \ said.ps1 $ myHashTable

В 'named.ps1' чторазница между

Param(
$myArr
)

,

Param(
[array] $myArr
)

и

Param(
[array[]] $myArr
)

?

1 Ответ

1 голос
/ 22 сентября 2019

Вы можете проверить это довольно напрямую.[ ухмылка ] ваши примеры дают ...

  • любой тип = остается, этот тип
  • 1d array = преобразуется в массив, если он уже не существует
  • 2d массив = преобразуется в неровный массив (массив массивов), если он еще не один

демонстрационный код ...

function Test-Parameter
    {
    Param
        (
        $GenericVar,
        [array]$OneD_Array,
        [array[]]$TwoD_Array
        )

    $GenericVar.GetType()
    $OneD_Array.GetType()
    $TwoD_Array.GetType()
    }

Test-Parameter -GenericVar 'One' -OneD_Array 'Two' -TwoD_Array 'Three'

вывод ...

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object
True     True     Object[]                                 System.Array
True     True     Array[]                                  System.Array
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...