Boo: especificando explicitamente o tipo de hash
-
23-09-2019 - |
Pergunta
Sou novo no Boo e tentando descobrir como declarar o tipo de hash. Quando eu faço:
myHash = {}
myHash[key] = value
(later)
myHash[key].method()
O compilador reclama que "o método não é um membro do objeto". Acredito que não sabe que tipo é o valor no hash.
Existe alguma maneira de declarar ao compilador que tipo as chaves e os valores do hash são para que ele não reclame?
Solução
A hashtable incorporada no boo é muito semelhante à hashtable .NET padrão - a chave e o valor de cada entrada são ambos do tipo "objeto".
Sua melhor aposta é usar um dicionário genérico:
import System.Collections.Generic
myHash = Dictionary[of string, Foo]()
Este exemplo criará um dicionário em que o tipo de chave é uma string, e o valor será do tipo foo
Outras dicas
Outra opção que deixa seu código inalterado é permitir a digitação de pato com o -ducky
trocar. Eu pessoalmente uso exclusivamente as coleções de System.Collections.Generic
Em vez da lista interna e dos tipos de dicionário, pois o desempenho é muito melhor.