kotlin - 使用默认参数不向函数传递值
问题描述
我有这个 Kotlin 功能:
fun doSomething(user: User = defaultUser) {
//do something
}
我从另一个地方调用它:
val user: User? = getUser()
if (user == null) {
doSomething()
} else {
doSomething(user)
}
是否可以改进此代码?我认为这个“if/else”有点混乱。有可能做这样的事情吗?
doSomething(user ?: NoValue)
解决方案
您可以将其缩减为user?.run(::doSomething) ?: doSomething()
(如果doSomething
不返回 null),但我不知道您为什么要这样做!
老实说,if/else 对我来说读起来很好,把它放在没有大括号的一行上,它又好又紧凑。不幸的是,我认为您不能有条件地将参数添加到函数调用中(当您有几个参数时,处理默认参数可能会变得笨拙)。
我同意@benjiii,如果您不需要使用 null 作为合法值,最好有一个可为空的参数并在内部处理默认值
推荐阅读
- angular - Mat-Autocomplete formControlName
- javascript - 后期输出的差异
- dom - Puppeteer 的 `page.content()` 总是使用 UTF-8 还是页面特定的字符集?
- javascript - 如何对组件进行引用并监听外部点击?
- ios - JavaScript 桥接 - 替代 window.webkit.messageHandlers.handlerNameHere.postMessage()
- amazon-web-services - 使用 aws 命令行显示红移查询
- pandas - 将函数应用于多索引数据帧时,如何使值和索引的长度相等?
- php - 在 Laravel 签名 URL 中使用 Spatie/laravel-url-signer 包抛出 403 错误并带有附加参数
- javascript - 如何动态加载页面内容
- laravel - 我如何在资源控制器中创建额外的路由?