Boo: en spécifiant explicitement le type d'un hachage
-
23-09-2019 - |
Question
Je suis nouveau à Boo, et essayer de comprendre comment déclarer le type d'un hachage. Quand je fais:
myHash = {}
myHash[key] = value
(later)
myHash[key].method()
le compilateur se plaint que « méthode ne fait pas partie de l'objet ». Je crois qu'il ne sait pas quel type de la valeur dans le hachage est.
Est-il possible que je peux déclarer au compilateur quel type les clés et les valeurs du hachage sont de sorte qu'il ne se plaindra pas?
La solution
La commande interne Hashtable dans boo est très similaire à la norme .NET Hashtable -. La clé et la valeur de chaque entrée sont à la fois « objet » de type
Votre meilleur pari est d'utiliser un dictionnaire générique:
import System.Collections.Generic
myHash = Dictionary[of string, Foo]()
Cet exemple va créer un dictionnaire où le type de la clé est une chaîne, et la valeur sera de type Foo
Autres conseils
Une autre option qui laisse inchangé votre code est de permettre la saisie de canard avec le commutateur -ducky
. Personnellement, j'utilise exclusivement les collections de System.Collections.Generic
au lieu de la liste intégrée et types dictionnaire, que la performance est beaucoup mieux.