为什么我在Groovy shell中运行闭包递归示例时遇到“No signature
发布时间:2020-12-14 16:22:00 所属栏目:大数据 来源:网络整理
导读:我正在尝试从 http://groovy.codehaus.org/JN2515-Closures开始尝试Groovy闭包递归示例. 我将片段保存在一个名为recursionTest.groovy的文件中并将其加载到shell中,但我得到了“没有签名方法错误”: // recursionTest.groovy def results = [];{ a,b - resu
我正在尝试从
http://groovy.codehaus.org/JN2515-Closures开始尝试Groovy闭包递归示例.
我将片段保存在一个名为recursionTest.groovy的文件中并将其加载到shell中,但我得到了“没有签名方法错误”: // recursionTest.groovy def results = []; { a,b -> results << a a<10 && call(b,a+b) }(1,1) assert results == [1,1,2,3,5,8,13] groovy:000> load recursionTest.groovy ===> [] ERROR groovy.lang.MissingMethodException: No signature of method: java.lang.Boolean.call() is applicable for argument types: (groovysh_evaluate$_run_closure1) values: [groovysh_evaluate$_run_closure1@6b7599cc] Possible solutions: wait(),any(),wait(long),and(java.lang.Boolean),each(groovy.lang.Closure),any(groovy.lang.Closure) at groovysh_evaluate.run (groovysh_evaluate:1) ... groovy:003> 这是怎么回事? 解决方法
我认为你的脚本有两个问题:
>在shell环境中,您有一定的范围.绑定的变量位于“绑定”中.要获得绑定中的一个,您必须在使用它之前确保它没有被定义!所以没有def结果.然而,这不是错误. – results = []; f = { a,b -> results << a a<10 && call(b,a+b) }(1,13] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |