Contagem de hash do Powershell e propriedades das chaves ficando sobrecarregadas
Declaração do Problema: As propriedades Count e Keys podem ser sobrecarregadas por um valor de hash e não retornar seus valores esperados.
Meu código do Powershell é 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
Minha saída é esta:
Count is [2]
Count is now [Count's Hash Value]
A propriedade Count fica sobrecarregada! Esse problema pode fazer com que os usuários sejam muito difíceis de diagnosticar bugs. Me confundiu por um bom tempo. O mesmo problema se aplica a "Chaves" ou a qualquer Propriedade.
Você tem alguma opinião sobre as melhores práticas para evitar essa? Talvez um System.Collection diferente? ou prefixar todas as chaves com um caractere como:
$key = ":" + $key
No entanto, não é muito elegante. Mesmo agora que conheço o problema, suspeito que vou esquecer e cometer o mesmo erro novamente.
Pessoalmente, acho que é um problema com a definição de idioma do Powershell. O . A notação (como em $ hash.MyKey) não deve ser permitida para recuperar valores de hash, apenas para recuperar valores de Propriedade. Apenas um pensamento. :-)
Obrigado pela ajuda.