加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

需要Groovy语法帮助从String生成Closure

发布时间:2020-12-14 16:34:04 所属栏目:大数据 来源:网络整理
导读:我正在尝试从字符串生成闭包.闭包内的代码引用了DSL函数build().我得到的错误暗示Groovy试图执行闭包而不是仅仅声明它.这个的正确语法是什么?以下是我已经尝试过的一些结构. sh = new GroovyShell() cl = sh.evaluate( '{ build("my job") }' } = Ambiguous
我正在尝试从字符串生成闭包.闭包内的代码引用了DSL函数build().我得到的错误暗示Groovy试图执行闭包而不是仅仅声明它.这个的正确语法是什么?以下是我已经尝试过的一些结构.

sh = new GroovyShell() 
cl = sh.evaluate( '{ build("my job") }' } 
=> Ambiguous expression could be either a parameterless closure expression or an isolated open code block;

sh = new GroovyShell() 
cl = sh.evaluate( 'L: { build("my job") }' } 
=> No signature of method: Script1.build() is applicable ...

cl = Eval.me( 'L: { build("my job") }' } 
=> No signature of method: Script1.build() is applicable ...

cl = Eval.me( 'L: { com.flow.FlowDelegate.build("my job") }' } 
=> No such property: com for class: Script1

我想要遵循的例子来自:
Load closure code from string in Groovy

解决方法

从脚本返回闭包怎么样?

Eval.me("return { build('my job') } ")

你打算用什么L:?回到地图?如果是这样,你可以使用方括号:

groovy:000> a = Eval.me("[L: { build('test for') }]")
===> {L=Script1$_run_closure1@958d49}
groovy:000> a.L
===> Script1$_run_closure1@958d49

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读