2012-06-21 13 views
14

Chcę utworzyć tablicę tablic w grze powershell.Jak utworzyć tablicę tablic w grze powershell?

$x = @(
    @(1,2,3), 
    @(4,5,6) 
) 

Działa prawidłowo. Jednak czasami mam tylko jedną tablicę na liście tablic. W tej sytuacji, PowerShell ignoruje jedną z list:

$x = @(
    @(1,2,3) 
) 

$x[0][0] # Should return 1 
Unable to index into an object of type System.Int32. 
At line:1 char:7 
+ $a[0][ <<<< 0] 
    + CategoryInfo   : InvalidOperation: (0:Int32) [], RuntimeException 
    + FullyQualifiedErrorId : CannotIndex 

Jak mogę utworzyć tablicy tablic, na pewno to pozostanie jako dwu-wymiarowej tablicy, nawet jeśli tablica ma tylko jeden element tablicy w nim?

Odpowiedz

29

Dodawanie siły przecinkami utworzyć tablicę:

$x = @(
    ,@(1,2,3) 
) 

prosty sposób:

$x = ,(1,2,3) 
+1

magii strajki przecinkami ponownie! Dlaczego Powerhell nie tworzy tablicy bez przecinka? – jumbo

+8

Dobry artykuł na temat magii: http://blogs.msdn.com/b/powershell/archive/2007/01/23/array-literals-in-powershell.aspx. Operatorem przecinka jest operator budowy macierzy w PowerShell –

+1

Oczywiście, dla spójności składni, miałbyś nadzieję, że to '@ (, @ (1,2,3), @ (4,5,6)) zadziała ... ale nie daje ci tego, czego się spodziewasz. Westchnienie. –

Powiązane problemy