Con*_* K. 1 android kotlin rx-java rx-kotlin rx-java2
在Kotlin中,函数的最终语句可以解释为其返回值.
可以将以下示例的情况简化为更简洁吗?
{ text: String ->
val validated = validateText(text)
if (validated) {
actOnValidation()
}
validated
}
Run Code Online (Sandbox Code Playgroud)
我想要这样做的一个具体案例是在使用RxJava的示例中 - 即使有更好的Rx方法,我也对纯Kotlin解决方案感兴趣(如果存在的话).
fun inputChainObservable(targetField: TextView, chainedField: TextView): Observable<Boolean> {
return targetField.textChanges()
.observeOn(AndroidSchedulers.mainThread())
.map { cs: CharSequence? ->
val hasInput = validateText(cs.toString())
if (hasInput) {
chainedField.requestFocus()
}
hasInput
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用它also()来操作并返回接收器:
{ text: String ->
validateText(text).also { valid ->
if (valid) actOnValidation()
}
}
Run Code Online (Sandbox Code Playgroud)
你也可以这样写,但我更喜欢第一种形式,因为我觉得它更清晰:
{ text: String ->
validateText(text).also {
if (it) actOnValidation()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |