我是 Groovy 新手,我正在尝试为某些特定任务编写一个迷你 DSL。 为此,我一直在尝试解决如下问题: 我想通过调用此代码(不使用括号)来打印(和/或返回)5:
give me 5
我预计像下面这样的定义会起作用:
def give = {clos -> return clos}
def me = {clos -> println clos; return clos}
但实际上并非如此。您能否帮助我如何定义“give”和“me”,以便使用表达式“give me 5”返回值 5,其中 me 必须是一个闭包,give 也可以是元类、属性等。
提前致谢! 四、
最佳答案
Groovy 1.8+ 需要
give me 5
并且解析器有效地尝试执行以下操作:
give( me ).5
所以,如果你像这样编写代码,它就可以工作:
def give = { map -> map }
def me = [:].withDefault { it }
a = give me 5
println a
打印:
5
关于groovy - 带有 Groovy 的 DSL -> 传递参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11898523/