2015-07-28 5 views
4

загружает следующий скрипт в groovysh:groovysh не может найти метод

def a() { 
    println "a()" 
} 

def b() { 
    println "b()" 
    a() 
} 

с помощью :load 'test.groovy' и вызвать метод Ь():

b() 

я получаю:

groovy:000> b() 
b() 
No signature of method: groovysh_evaluate.a() is applicable for argument types:() values: [] 
Possible solutions: b(), any(), is(java.lang.Object), any(groovy.lang.Closure), wait(), run() 
     at groovysh_evaluate.b (groovysh_evaluate:5) 

Почему не может groovysh найти метод a()?

+2

Это очень похоже на ошибку groovysh. Я тоже ожидал, что это сработает, но это не на моей 2.4.0 Groovy Shell машине, но он делает это в онлайн-игре: https://groovyconsole.appspot.com/. Хммм. Что-то здесь не так. –

ответ

0

В качестве временного решения можно использовать закрытия вместо методов:

a = { 
    println "a()" 
} 

b = { 
    println "b()" 
    a() 
} 

Это дает:

groovy:000> a = { 
groovy:001>  println "a()" 
groovy:002> } 
===> [email protected] 
groovy:000> 
groovy:000> b = { 
groovy:001>  println "b()" 
groovy:002>  a() 
groovy:003> } 
===> [email protected] 
groovy:000> a() 
a() 
===> null 
groovy:000> b() 
b() 
a() 
===> null 
groovy:000> 

Однако не знаю, почему она не работает.

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