$b = (2,3)
$myarray1 = @(,$b,$b)
$myarray1[0].length #this will be 1
$myarray1[1].length
$myarray2 = @(
,$b
,$b
)
$myarray2[0].length #this will be 2
$myarray[1].length
$myarray3 = @(,$b
,$b
)
$myarray3[0].length #this will be 2
$myarray3[1].length
UPDATE
Я думаю, что для #powershell IRC мы это разработали. Вот еще один пример, который демонстрирует опасность разрыва с запятой в следующей строке, а не в верхней строке при перечислении нескольких элементов в массиве из нескольких строк.
$b = (1..20)
$a = @( $b, $b ,$b,
$b, $b ,$b)
for($i=0;$i -lt $a.length;$i++)
{
$a[$i].length
}
"--------"
$a = @( $b, $b ,$b
,$b, $b ,$b)
for($i=0;$i -lt $a.length;$i++)
{
$a[$i].length
}
производит
20
20
20
20
20
20
--------
20
20
20
1
20
20
На самом деле, скорее, использование вложенных массивов, которые могут усложнить это, представляет собой простой массив целых чисел
$c = @( 1 , 2 ,
3 , 4 )
for($i=0;$i -lt $c.length;$i++)
{
$c[$i].gettype()
}
"---------"
$c = @( 1 , 2
, 3 , 4 )
for($i=0;$i -lt $c.length;$i++)
{
$c[$i].gettype()
}
и результаты
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Int32 System.ValueType
True True Int32 System.ValueType
True True Int32 System.ValueType
True True Int32 System.ValueType
---------
True True Int32 System.ValueType
True True Int32 System.ValueType
True True Object[] System.Array
True True Int32 System.ValueType
Мне любопытно, как люди это объяснят. Я думаю, что я понимаю это сейчас, но не смог бы объяснить это кратко и понятно, хотя приведенный выше пример несколько идет к этой цели.