我是Groovy的新手,我正在为一些特定的任务编写一个迷你DSL.为此,我一直在尝试解决下面这样的问题:我想通过调用此代码(不使用parantheses)来打印(和/或返回)5:
give me 5
Run Code Online (Sandbox Code Playgroud)
我希望下面这样的定义可行:
def give = {clos -> return clos}
def me = {clos -> println clos; return clos}
Run Code Online (Sandbox Code Playgroud)
但事实上并非如此.你能帮我解释一下如何定义"给"和"我",以便用表达式"给我5"返回值5,其中我必须是一个闭包,给出也可以是metaClass,属性等.
提前致谢!IV
Groovy 1.8+ 需要
give me 5
Run Code Online (Sandbox Code Playgroud)
并且解析器有效地尝试执行以下操作:
give( me ).5
Run Code Online (Sandbox Code Playgroud)
因此,如果您像这样编写代码,它就会起作用:
def give = { map -> map }
def me = [:].withDefault { it }
a = give me 5
println a
Run Code Online (Sandbox Code Playgroud)
印刷:
5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1006 次 |
| 最近记录: |