首页 > 解决方案 > 返回菊花链的伴随对象实例

问题描述

我想菊花链我的同伴对象函数。例子:

Company.addUser("bob").deleteUser("steve")

class Company {
   companion object {
      fun addUser(name: String): Company {
         // add user code goes here
         return Company
      }

      fun deleteUser(name: String): Company {
        // add code to delete user
        return Company
      }
   }
}

这当然不会编译。如何从函数中返回伴随对象,以便在调用中对它们进行菊花处理?

标签: kotlin

解决方案


Kotlin 中并不真正需要这种“流畅”的界面,因为有几种替代方案不需要更改被调用的代码。例如:

with(Company) {
    addUser("bob")
    deleteUser("steve")
}

和:

Company.apply {
    addUser("bob")
    deleteUser("steve")
}

并且由于apply()返回调用它的对象,如果您想分配或使用结果,后一个示例也适用。

您通常会在类实例中看到这些模式,但它们也适用于伴随对象。

它们比“流畅”的界面更灵活,而且非常简洁。(当然,如果需要,您可以将它们中的每一个压缩到一行中,用 a 分隔语句;,但是将它们放在单独的行中更具可读性——这通常也适用于“流利”调用!)


推荐阅读