我知道在Kotlin中使用扩展函数来扩展类(例如,库或API中的类)的功能.

However, is there any advantage, in terms of code readability/structure, by using extension functions:

class Foo { ... }

fun Foo.bar() {
    // Some stuff
}

As opposed to member functions:

class Foo {

    ...

    fun bar() {
        // Some stuff
    }
}

?

Is there a recommended practice?

推荐答案

在我看来,使用扩展功能有两个令人信服的原因:

  1. 要"扩展"您不是/不能更改(继承没有意义或不可能)的类的行为.

  2. 为特定功能提供作用域.例如,可以将扩展函数声明为独立函数,在这种情况下,它可以在任何地方使用.或者,您可以 Select 将其声明为另一个类的(私有)成员函数,在这种情况下,它只能从该类内部使用.

It sounds like #1 isn't a concern in your case, so it's really more down to #2.

Kotlin相关问答推荐

了解Kotlin函数

如何避免使用公共类实现内部接口

"Kotlin中的表达式

Spring Boot 3:为Kotlin中的TestRestTemplate配置读取超时

如何在Android应用判断上运行多个查询

同时也是一个字符串的 Kotlin 枚举

Kotlin .如何用从 1 到 90 的 5 个唯一数字填充列表中的每一行?

协程子作业(job)取消

在 Kotlin 中,如何绑定扩展方法以在接收器范围函数中工作

在 Kotlin 中,为什么在 `+` 之前但在 `.` 之前没有换行符?

如何将 `throw` 放置在辅助函数中但仍然具有空安全性?

为什么 KFunction2 在 Kotlin 中不是可表示类型?

.indices 在 kotlin 中的含义是什么?

Hilt Activity 必须附加到 @AndroidEntryPoint 应用程序

Tornadofx - 如何在每个实例上将参数传递给 Fragment

Jetpack Compose-居中文本

如何在 Gradle Kotlin DSL 中使用来自 gradle.properties 的插件版本?

内联 Kotlin 方法没有覆盖报告

Kotlin中的函数接口

比较Kotlin的NaN