2010-01-29 6 views
2

Je suis nouveau à Boo, et en essayant de comprendre comment déclarer le type d'un hachage. Quand je fais:Boo: spécifiant explicitement le type d'un hachage

myHash = {} 
    myHash[key] = value 
    (later) 
    myHash[key].method() 

le compilateur se plaint que "la méthode n'est pas un membre de l'objet". Je comprends qu'il ne sait pas quel type la valeur dans le hachage est.

Y at-il un moyen de déclarer au compilateur de quel type sont les clés et les valeurs du hachage pour qu'il ne se plaint pas?

Répondre

2

La hashtable intégrée dans boo est très similaire à la norme .NET Hashtable - la clé et la valeur de chaque entrée sont toutes deux de type "objet".

Votre meilleur pari est d'utiliser un dictionnaire générique:

import System.Collections.Generic 

myHash = Dictionary[of string, Foo]() 

Cet exemple crée un dictionnaire où le type de la clé est une chaîne, et la valeur sera de type Foo

1

Une autre L'option qui laisse votre code inchangé est d'activer le typage 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 des types de dictionnaire, car les performances sont bien meilleures.

Questions connexes