kotlin - 返回菊花链的伴随对象实例
问题描述
我想菊花链我的同伴对象函数。例子:
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 中并不真正需要这种“流畅”的界面,因为有几种替代方案不需要更改被调用的代码。例如:
with(Company) {
addUser("bob")
deleteUser("steve")
}
和:
Company.apply {
addUser("bob")
deleteUser("steve")
}
并且由于apply()
返回调用它的对象,如果您想分配或使用结果,后一个示例也适用。
您通常会在类实例中看到这些模式,但它们也适用于伴随对象。
它们比“流畅”的界面更灵活,而且非常简洁。(当然,如果需要,您可以将它们中的每一个压缩到一行中,用 a 分隔语句;
,但是将它们放在单独的行中更具可读性——这通常也适用于“流利”调用!)
推荐阅读
- angular - 当 auth Guard 发送用户登录或注册时,Angular 9 和 Ionic 重定向到上一页
- django - Django 3 设置 django_language cookie
- laravel - laravel 表单搜索数据库中不可用的数据
- android - 如何以编程方式为工具栏内的所有图标设置 colorControlHighlight (波纹颜色)?
- python - Python:解析连接的 JSON
- java - Google App Engine MemcacheService.delete(key, millisNoReAdd) 并不总是支持并发推杆
- machine-learning - LSTM 中的 NumHiddenUnits
- sql - 随机抽样并为 Tableau 中的每个样本集分配值
- node.js - nock 是否与节点多线程集群模块一起使用?
- laravel - npm run watch 停止工作 - 带有 Vue.js 的 Laravel