2013-10-08 2 views
1

Я новичок в Groovy, но я пытаюсь написать простой рекурсивный метод для разбора иерархических путей в граф объектов. Вот что я пробовал:Отсутствует метод исключения, когда существует метод

class Hierarchy { 
    def root = [:] 

    static void processHierarchy(names, parent) { 
     println names 
     if (names.size() > 0) { 
      def childName = names[0] 
      def child = parent[childName] 
      if (child == null){ 
       child = new Expando() 
       parent[childName]= child 
      } 
      processHierarchy(names[1..-1], child) 
     } 
    } 

    Hierarchy() { 
     def names = '/some/thing/to/test'.split('/') 
     if (names != null && names.size() > 0){ 
      processHierarcy(names, this.root) 
     } 
     println this.root 
    } 
} 

new Hierarchy() 

Но я получаю следующее сообщение об ошибке:

Caught: groovy.lang.MissingMethodException: No signature of method: Hierarchy.processHierarcy() is applicable for argument types: ([Ljava.lang.String;, java.util.LinkedHashMap) values: [[, some, thing, to, test], [:]] 
Possible solutions: processHierarchy(java.lang.Object, java.lang.Object) 
groovy.lang.MissingMethodException: No signature of method: Hierarchy.processHierarcy() is applicable for argument types: ([Ljava.lang.String;, java.util.LinkedHashMap) values: [[, some, thing, to, test], [:]] 
Possible solutions: processHierarchy(java.lang.Object, java.lang.Object) 
    at Hierarchy.<init>(xxx.groovy:48) 
    at xxx.run(xxx.groovy:54) 

Что я здесь отсутствует?

ответ

1

пропущен h в processHierarcy(names, this.root) :)

Кроме того, изменения, если блок в processHierarchy() для if(names.size() > 1), чтобы избежать IndexOutOfBoundsException исключения.

+0

Спасибо, вау ... Время для кофе. – dwerner

Смежные вопросы