我正在学习科特林和阅读类型安全建筑商一节
我遵循它的例子并编写了一些测试,然后我发现了一个我无法理解的问题。问题是,以下代码似乎是等价的:
head
html {标题{+“第一个标题”}head
html {标题{+“第二个标题”}}头{标题{+“第一个标题”}这两个函数调用返回相同的结果。测试结果
我认为正确的结果应该是“你看到的就是你得到的”.
发布于 2016-03-03 06:02:53
如果仔细研究“com.example.html包的完整定义”,就会发现head是HTML的一种方法。这意味着只能对head的一个实例调用HTML。按照您期望它工作的方式,必须有一个head成员的Head类。
在第一个示例代码中,head的第二次调用实际上是在外部html实例接收器上调用的。这意味着您有效地将它创建的新元素添加到html中,而不是将其立即封装在head中。
换句话说,您的第一个代码示例相当于以下内容:
html {
head {
title { +"First Title" }
this@html.head {
title { +"Second Title" }
}
}
}注意this@html,它准确地限定了用于调用head的外部接收器实例。还请注意,this@head不会编译,因为正如我所说的,Head类没有head方法。
https://stackoverflow.com/questions/35763172
复制相似问题