[英]For a Kotlin function used as an expression, is there concise way to operate on and return a value?
在Kotlin中,函數的最終語句可以解釋為其返回值。
可以將以下示例中的情況簡化為不那么冗長嗎?
{ text: String ->
val validated = validateText(text)
if (validated) {
actOnValidation()
}
validated
}
下面是在一個使用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
}
}
您可以使用also()
操作並返回接收器:
{ text: String ->
validateText(text).also { valid ->
if (valid) actOnValidation()
}
}
您也可以這樣寫,但是我更喜歡第一種形式,因為我認為它更清晰:
{ text: String ->
validateText(text).also {
if (it) actOnValidation()
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.