2009-07-07 8 views
3

Dans Boo, disons que je remplace une méthode qui prend un paramètre qui prend string[] urls. L'inférence de type, quelle qu'en soit la raison, ne correspond pas à la classe de base, j'ai donc besoin de spécifier explicitement le type du paramètre.Dans Boo, comment puis-je spécifier un paramètre de tableau?

class MyClass: MyBase 
    override method(urls as Array[of (string)]) 
    dostuff() 

Cela s'avère ne pas être correcte Syntaxe Boo. Quelle est la bonne façon de spécifier que je substitue une méthode qui prend un paramètre de tableau?

Normalement, je préfère attendre un IEnumerable, mais je remplace la classe de base de quelqu'un d'autre, qui fait partie de Rhino.DSL.

Edité pour ajouter: Il s'avère que mon problème n'était lié que de manière tangentielle à la syntaxe de déclaration de tableau ... mon vrai problème était deux versions différentes de l'assemblage Boo référencé dans mon projet.

Répondre

3

Parenthèses autour d'un type représente un tableau de ce type:

class MyClass : MyBase 
    override def method(urls as (string)): 
    dostuff() 
+0

Merci, je trouve enfin que dans la documentation quelques secondes après que j'ai posté. Dans le cas simple ci-dessus, cela fonctionne clairement. Cependant, bizarrement, j'ai trouvé qu'il n'aime pas: surcharger la méthode def (barre comme Boo.Lang.Compiler.CompilerPipeline, urls comme (chaîne)) bien que la plupart des types arbitraires ont bien fonctionné ... Une chance il y a un problème bien connu autour de certains types d'objets, ou dois-je faire plus de chasse? – JasonTrue

+0

'Virtuoso.QA.VatDsl.Features.MyClass1.DoStuff (Boo.Lang.Compiler.CompilerPipeline, (chaîne))': aucune méthode appropriée trouvée pour remplacer. La méthode du même nom a été trouvée avec des signatures incompatibles. (BCE0060) - C: \ virtuoso \ sl \ QAMain \ Virtuoso \ Virtuoso.QA.Vat \ Virtuoso.QA.VatDslSupport \ TestDSLEngine.boo: 9,18 – JasonTrue

+0

@JasonTrue: Pas celui que je connais. Cela dit, je ne suis pas un expert de Boo mais c'est une chose étrange pour un langage de programmation donc je chercherais le problème ailleurs plutôt que d'examiner les définitions de paramètres. Êtes-vous sûr qu'il existe une méthode avec ces paramètres à remplacer? –

Questions connexes