使用Kotlin关于函数文字与Receiver的文档中的示例:
val sum = fun Int.(other: Int): Int = this + other
可以像这样调用sum函数,就像它是接收器对象的方法一样:
1.sum(2)
但是我注意到我们也可以调用这样的函数:
sum(1, 2)
当然,他们都给出了相同的结果。我的问题是,如果行为是预期的?或者我在文档中遗漏了什么?
答案 0 :(得分:2)
是的,扩展函数被编译为静态函数,接收者作为第一个参数。例如:
fun Int.sum(other: Int): Int = this + other
有点编译:
static int sum(int receiver, int other) {
return receiver + other;
}