如何从kotlin中的函数返回值

我想从函数返回布尔值。

fun validateDetails(jabberId:String, passwordText: String) { if(jabberId.isEmpty()){ jabber_id.requestFocus() jabber_id.error="Jabber id can't be null." return false }else if(jabberId.isBlank()){ jabber_id.requestFocus() jabber_id.error="Jabber id can't be blank." return false }else if (passwordText.isNotEmpty()){ password.requestFocus(); password.error="Password can't be null." return false } else{ return true } } 

错误:布尔文字不符合期望的类型单位。

我知道unit是kotlin的默认返回类型。 我将如何改变这个布尔值。

Kotlin只能推断函数的返回类型,所以如果函数有一个正文,则需要在函数的参数之后指定返回的类型

 fun functionName(param: Type...): ReturnedType { //function body } fun validateDetails(jabberId:String, passwordText: String):Boolean { if(jabberId.isEmpty()){ jabber_id.requestFocus() jabber_id.error="Jabber id can't be null." return false }else if(jabberId.isBlank()){ jabber_id.requestFocus() jabber_id.error="Jabber id can't be blank." return false }else if (passwordText.isNotEmpty()){ password.requestFocus(); password.error="Password can't be null." return false } else{ return true } } 

正如glee8e提到的,这可以使用表达式来完成。 这是如何做的。

 fun validateDetails(jabberId:String, passwordText: String) = when { jabberId.isEmpty() -> { jabber_id.requestFocus() jabber_id.error="Jabber id can't be null." false } jabberId.isBlank() -> { jabber_id.requestFocus() jabber_id.error="Jabber id can't be blank." false } passwordText.isNotEmpty() -> { password.requestFocus(); password.error="Password can't be null." false } else -> true }