Kotlin中的接收器是什么?

时间:2019-07-05 20:08:06

标签: kotlin

有人告诉我科特林的@Column( length = 100000 ) private String text; 是什么?我检查了官方文档,但不明白它是什么。

您还可以告诉我下面的代码receiver具有什么功能:

Int.

1 个答案:

答案 0 :(得分:1)

通常,接收者是this,即当前实例。

在Kotlin中,带接收器的lambda(即Int.(Int, Float) -> Int是)定义函数的方法,这些函数的行为与其接收器的方法类似:它们可以使用this引用接收器,并且可以轻松调用接收方的其他方法和属性。 (私有方法和属性除外。)

这是您输入的lambda类型的一些示例代码,其中接收方的类型为Int。实际的接收者实例作为第一个参数传递给invoke

val lambdaWithReceiver: Int.(Int, Float) -> Int = { firstArgument, secondArgument ->
    println("this = $this") // accessing this
    println("this.toLong() = ${toLong()}") // calling Int's methods
    println("firstArgument = $firstArgument")
    println("secondArgument = $secondArgument")
    this + 3
}

// passes 7 as the receiver, 3 and 2F as the arguments
val result = lambdaWithReceiver.invoke(7, 3, 2F) 
println("result = $result")

上面的代码段将输出以下输出:

this = 7
this.toLong() = 7
firstArgument = 3
secondArgument = 2.0
result = 10