Mat*_*sov 5 groovy groovyshell
我将以下脚本加载到groovysh中:
def a() {
println "a()"
}
def b() {
println "b()"
a()
}
Run Code Online (Sandbox Code Playgroud)
通过使用:load 'test.groovy'
和调用方法b():
b()
Run Code Online (Sandbox Code Playgroud)
我明白了:
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)
Run Code Online (Sandbox Code Playgroud)
为什么groovysh找不到方法a()?
作为解决方法,您可以使用闭包而不是方法:
a = {
println "a()"
}
b = {
println "b()"
a()
}
Run Code Online (Sandbox Code Playgroud)
它给:
groovy:000> a = {
groovy:001> println "a()"
groovy:002> }
===> groovysh_evaluate$_run_closure1@74a6f9c1
groovy:000>
groovy:000> b = {
groovy:001> println "b()"
groovy:002> a()
groovy:003> }
===> groovysh_evaluate$_run_closure1@7922d892
groovy:000> a()
a()
===> null
groovy:000> b()
b()
a()
===> null
groovy:000>
Run Code Online (Sandbox Code Playgroud)
但不知道为什么它不起作用。
归档时间: |
|
查看次数: |
230 次 |
最近记录: |