interface Node {
fun render(): String
}
class BlockNode(val name: String): Node {
val children = ArrayList<Node>()
val properties = HashMap<String, Any>()
override fun render(): String {
//ToDo
}
}
fun html(block: BlockNode.() -> Unit): BlockNode {
val html = BlockNode("html")
html.block()
return html
}
代码中的html.block()我不是很理解,class BlockNode也没有block方法啊,
按照java的思维,不是BlockNode这个类中有block这个方法才可以调用吗?但是并没有这个方法;
而且传入参数block返回的是unit,已知class BlockNode传入字符串“html”实例化然后val html接收;
然后就糊涂了,html怎么就可以.block,html.block()的返回值是啥?
视频上说把html传给block究竟是什么意思?
没学过这个语法,但因为看过之前那个block: T.() ->unit,我可以理解block()返回的是this,就是说如果T实例化了,那么实例化对象t { }里面,可以使用this。
但是不理解视频上说 html.block()把html传递给block这句话的意思?按我的理解就是BlockNode的实例化对象是html,那么html{ }里面已经可以使用this了呀,t.block()究竟是啥意思呢?就是html.block()真的不懂