是否期望我可以通过传入接收器对象作为第一个参数来调用接收器对象的函数?

使用Kotlin关于函数接收函数的文档中的例子:

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

sum函数可以像这样被调用,就好像它是接收者对象的一个​​方法:

 1.sum(2) 

但是我注意到我们也可以像这样调用函数:

 sum(1, 2) 

当然,他们都有同样的结果。 我的问题是,如果行为是预期的? 或者我错过了文档中的某些东西?

是的,扩展函数被编译为静态函数,接收者作为第一个参数。 举个例子:

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

有些编译为:

  static int sum(int receiver, int other) { return receiver + other; }