介紹完類型別名後,接著我們要繼續介紹構建器(builders)
透過良好命名的函式做為構建器,將可實現型別安全(type-safe)、靜態型別(statically-typed)
import com.example.html.*
fun result() =
html {
head {
title {+"XML encoding with Kotlin"}
}
body {
h1 {+"XML encoding with Kotlin"}
p {+"this format can be used as an alternative markup to XML"}
a(href = "https://kotlinlang.org") {+"Kotlin"}
p {
+"This is some"
b {+"mixed"}
+"text. For more see the"
a(href = "https://kotlinlang.org") {+"Kotlin"}
+"project"
}
p {+"some text"}
p {
for (arg in args)
+arg
}
}
}
思考以上範例,在這裡html實際上作為實際上作為函式,並使用lambda表示式做為引數
函式的定義如下:
fun html(init: HTML.() -> Unit): HTML {
val html = HTML()
html.init()
return html
}
藉由this可以讀取,在這裡head以及body都是HTML的成員函式
html {
this.head { ... }
this.body { ... }
}