在 Kotlin,一个至少有一个参数的函数可以定义为一个常规的非成员函数,也可以定义为一个参数为接收器的 扩展函数扩展函数函数。
至于作用域,似乎没有什么区别: 两者都可以在类和其他函数的内部或外部声明,并且两者都可以或不可以同等地使用可见性修饰符。
语言引用似乎不推荐在不同情况下使用常规函数或扩展函数。
所以,我的问题是: 什么时候扩展函数优于常规的非成员函数?当普通的延长?
foo.bar(baz, baq)
vs bar(foo, baz, baq)
.
它是否只是函数语义的一个提示(接收方绝对是焦点) ,或者有使用扩展函数使代码更清晰或者打开机会的情况?