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

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

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

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

 1.sum(2) 

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

 sum(1, 2) 

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

One Solution collect form web for “是否期望我可以通过传入接收器对象作为第一个参数来调用接收器对象的函数?”

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

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

有些编译为:

  static int sum(int receiver, int other) { return receiver + other; } 
  • 使用Kotlin Firebase Firestore toObject()
  • Kotlin循环与不规则的步骤
  • 将不推荐使用的方法从Java转换为Kotlin
  • 如何在Kotlin中使用地图
  • 为什么我们编写NextActivity :: class.java,尽管这是一个kotlin类?
  • Kotlin反射+泛型
  • 无法下载eclipse的插件
  • Kotlin - 使用枚举来检索一个字符
  • Kotlin Dokka'html-as-java'格式不生成java
  • 如何在Kotlin中将Any转换为Int
  • 只有最后一个元素添加到RecyclerView Android(Kotlin)
  • Kotlin language will be the best programming language for Android.