2012-06-21 46 views
14

Quiero crear una matriz de matrices en powershell.¿Cómo crear una matriz de matrices en powershell?

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

Funciona bien. Sin embargo, a veces solo tengo una matriz en la lista de arreglos. En esa situación, powershell ignora una de las listas:

$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 

¿Cómo se crea una matriz de matrices, que está garantizada permanecen como una matriz de dos dimensiones, incluso si la matriz tiene un solo elemento de la matriz en ella?

Respuesta

29

Adición de una fuerza de coma para crear una matriz:

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

manera simple:

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

Las huelgas por comas magia otra vez! ¿Por qué PowerShell no creará una matriz sin una coma? – jumbo

+8

Un buen artículo sobre la magia: http://blogs.msdn.com/b/powershell/archive/2007/01/23/array-literals-in-powershell.aspx. El operador de coma es el operador de construcción de matriz en PowerShell –

+1

Por supuesto, para la consistencia de la sintaxis, esperaría que esto '@,, @ (1,2,3), @ (4,5,6))' funcione ... pero no te da lo que esperas. Suspiro. –

Cuestiones relacionadas