有人可以在文档中解释 Groovy 命令链 dsl 示例吗...文本被解析为映射和闭包
Can someone explain Groovy command chain dsl example in documentation... the text got parsed into maps and closures
show = { println it }
square_root = { Math.sqrt(it) }
def please(action) {
[the: { what ->
[of: { n -> action(what(n)) }]
}]
}
// equivalent to: please(show).the(square_root).of(100)
please show the square_root of 100
// ==> 10.0
我明白了,请(显示)returns 一个对象,它有一个名为 the(param) 的方法,而该方法又 returns 一个对象,它有一个方法 (param)。
我不明白的是,“please show the square_root of 100”这一行是如何在 please (show)
之后转换为地图和闭包的
这里的关键是在没有“可选”调用的情况下写出代码,并且
缺少成员访问权限。即:
please(show).the(square_root).of(100)
当时的工作方式是通过返回一个映射来链接下一个调用,其中 (at
至少)一个“在句子中”的键,它再次具有闭包的价值
继续这条链。
所以写得更冗长(一个
link 链中):
.getAt('the').call(square_root)
show = { println it }
square_root = { Math.sqrt(it) }
def please(action) {
[the: { what ->
[of: { n -> action(what(n)) }]
}]
}
// equivalent to: please(show).the(square_root).of(100)
please show the square_root of 100
// ==> 10.0
我明白了,请(显示)returns 一个对象,它有一个名为 the(param) 的方法,而该方法又 returns 一个对象,它有一个方法 (param)。
我不明白的是,“please show the square_root of 100”这一行是如何在 please (show)
之后转换为地图和闭包的这里的关键是在没有“可选”调用的情况下写出代码,并且 缺少成员访问权限。即:
please(show).the(square_root).of(100)
当时的工作方式是通过返回一个映射来链接下一个调用,其中 (at 至少)一个“在句子中”的键,它再次具有闭包的价值 继续这条链。
所以写得更冗长(一个 link 链中):
.getAt('the').call(square_root)