是否有可能从lambda的闭包隐藏变量?

我试图在Kotlin中创建类型安全的Groovy风格的构建器,就像这里所描述的那样。 问题是嵌套lambda中lambda接收器的可见性。 这是一个简单的例子。

html { head(id = "head1") body() { head(id = "head2") } } 

嵌套lambda的Receiver是没有“head”方法的Body。 不过这个代码编译打印成这样:

 <html> <head id="head1"></head> <head id="head2"></head> <body></body> </html> 

这是预料,但有没有办法让内心的编译错误?

从Kotlin 1.0开始,这是不可能的。 这个功能有一个开放的功能请求 。

Interesting Posts