-
8.18 带接收者的函数字面值
-
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语言。
- 留下你的读书笔记
- 你还没登录,点击这里
-
用户笔记留言