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
我知道please(show)
返回一个对象,该对象有一个名为the(param)
的方法,而the(param)
又返回一个对象,该对象有一个of(param)
方法。
我不明白的是
please show the square_root of 100
在please(show)
之后被转换为Map和闭包
1条答案
按热度按时间aydmsdu91#
这里的关键是写出代码,而不遗漏“可选”调用和成员访问。即:
这样做的工作方式是通过返回一个Map来链接下一个调用,(至少)在句子”中“有一个键,它又有一个闭包作为值来继续这个链。
因此,为了更详细地写出它(针对链中的一个链接):