Для функции 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() } }