簡體   English   中英

對於用作表達式的Kotlin函數,是否有簡潔的方法可以操作並返回值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM