【发布时间】:2021-05-19 14:36:51
【问题描述】:
我正在尝试为个人项目创建一个易于使用的 html 生成器。我想我会使用扩展函数来以编程方式生成一个 html,如下所示:
html {
head {
title("Site title")
}
body {
div {
// stuff in div
}
}
}
为此我声明了一个接口:
fun interface TagBlock {
operator fun Tag.invoke()
}
其中Tag 是指定特定标签的类,例如html、body、div 等:
class Tag(val name: String)
我现在尝试创建一个接受前面提到的接口并返回标签的函数:
fun html(block: TagBlock): Tag {
val html = Tag("html")
// invoke `block` with `html`
return html
}
我不知道如何调用提供的参数block。以下都不起作用:
block(html) // Unresolved reference
block.invoke(html) // unresolved reference
html.block() // Unresolved reference: block
我哪里做错了?
【问题讨论】: