8.2.13 带接收者的函数字面值
Kotlin 提供了使用指定的 接收者对象 调用函数字面值的功能。
使用匿名函数的语法,我们可以直接指定函数字面值的接收者类型。
下面我们使用带接收者的函数类型声明一个变量,并在之后使用它。代码示例:
>>> val sum = fun Int.(other: Int): Int = this + other
>>> 1.sum(1)
2
当接收者类型可以从上下文推断时,lambda 表达式可以用作带接收者的函数字面值。
class HTML {
fun body() {
println("HTML BODY")
}
}
fun html(init: HTML.() -> Unit): HTML { // HTML.()中的HTML是接受者类型
val html = HTML() // 创建接收者对象
html.init() // 将该接收者对象传给该 lambda
return html
}
测试代码:
html {
body()
}
输出:HTML BODY
使用这个特性,我们可以构建一个HTML的DSL语言。
当前内容版权归 JackChan1999 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 JackChan1999 .