如果我有类似的东西:
fun showProgressView() = ultraRecyclerView?.showProgressBar()
它说它返回Unit?而不是Unit(编辑)
- - -编辑 - - -
一种方法可能
fun showProgressView() = ultraRecyclerView?.showProgressBar() ?: Unit
但它看起来不适合我.
另一种方式:
fun showProgressView() { ultraRecyclerView?.showProgressBar() }
但我无法找到android studio维护该格式的方法.
如果使用函数的短表达式,则表达式的推断结果类型将确定函数返回类型.如果这是来自Java的平台类型,它可以是可空的.如果它是Kotlin类型,那么它将知道正确的可空性.
但是因为你使用安全操作符,?.你肯定会说它可以为空.如果结果是null或者Unit然后给出推断的结果类型Unit?
这很奇怪,但正是你所说的.因此,要么使用普通函数体,要么{ .. }在可能的情况下为函数提供显式返回类型.
fun showProgressView(): Unit { ultraRecyclerView?.showProgressBar() }
Run Code Online (Sandbox Code Playgroud)
您还可以通过在以下位置创建扩展功能来擦除可空性Unit?:
fun Unit?.void() = Unit
Run Code Online (Sandbox Code Playgroud)
每当您想要修复返回类型时使用它:
fun showProgressView() = ultraRecyclerView?.showProgressBar().void()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1529 次 |
| 最近记录: |