首页 > 解决方案 > Kotlin:如何进行 Class().fooA().fooB()

问题描述

我目前正在将我的代码技能提升到更高级的水平,以实现“更容易维护代码”,我遇到了这个问题

val attachView = Custom()
    attachView.setRoot(root)
    attachView.setAdded(add)
    attachView.build()

那些代码,你可以看到我一遍又一遍地调用 attachView。它工作正常,但我希望它通过消除多次调用 attachView 来更紧凑。我的最终目标就是这样

Custom().setRoot().setAdded().build()

为了构建类似的东西,我必须知道什么方法吗?

标签: android-studiokotlin

解决方案


没有外部方法会给你这样的语义:

Custom().setRoot().setAdded().build()

它可以通过改变Customer类的内部来实现。这样setRoot()andsetAdded()就会返回this。像fun setRoot(root: Root): Custom等。

使用 Kotlin,您可以使用多个函数来避免attachView.在方法调用之前添加。喜欢

-和

with(Custom()) {
    setRoot(root)
    setAdded(add)
    build()
}

-申请

Custom().apply {
    setRoot(root)
    setAdded(add)
    build()
}

推荐阅读