函数文本接收器

Kotlin提供使用一个特殊的接收对象来调用函数的功能。在函数文本主体内部,你可以调用接收器对象的方法而不需要使用任何的额外的限定符。这有点像扩展函数,一个函数文本接收器的最佳例子就是Type-safe Groovy-style builders。

这样的函数文本的类型就是函数类型接收器:

sum : Int.(other: Int) -> Int

这样的函数文本可以被调用就好像它是接收对象的一个方法一样。

1.sum(2)

匿名函数语法允许你指定函数接收类型。如果你想要申明一个函数类型变量并且在以后使用,这将会很有用。

val sum = fun Int.(other: Int): Int = this + other

如果接收器类型可以从上下文推断,那么lambda表达式可以被用作函数文本接收器。

class HTML {
    fun body() { ... }
}
fun html(init: HTML.() -> Unit): HTML {
    val html = HTML() // create the receiver object
    html.init() // pass the receiver object to the lambda
    return html
}
html { // lambda with receiver begins here
    body() // calling a method on the receiver object
}

results matching ""

    No results matching ""