Powershell Hashtable Count y Keys Properties se sobrecargan
Planteamiento del problema: Las propiedades Count y Keys pueden sobrecargarse por un valor hash y no devolver sus valores esperados.
Mi código Powershell es este:
$hash = @{}
$hash.one = "Number 1"
$hash.two = "Number 2"
"Count is [{0}]" -f $hash.Count
$hash.Count = "Count's Hash Value"
"Count is now [{0}]" -f $hash.Count
Mi salida es esta:
Count is [2]
Count is now [Count's Hash Value]
¡La propiedad Count se sobrecarga! Estos problemas podrían causar que los usuarios diagnostiquen errores muy difíciles. Me confundió por un buen rato. El mismo problema se aplica a las "Llaves" o, de hecho, a cualquier Propiedad.
¿Tienes alguna idea sobre las mejores prácticas para evitar esta? Quizás un sistema diferente. o anteponer todas las claves con un carácter como:
$key = ":" + $key
Sin embargo, no es muy elegante. Incluso ahora que conozco el problema, sospecho que lo olvidaré y volveré a cometer el mismo error.
Personalmente, creo que es un problema con la definición del lenguaje Powershell. Los . La notación (como en $ hash.MyKey) no debe permitirse para recuperar valores hash, solo para recuperar valores de propiedad. Solo un pensamiento. :-)
Gracias por tu ayuda.