Intereting Posts
kotlin как ссылаться на внешнюю область в многослойных приложениях Странная ошибка «Val не может быть переназначена» при установке свойства в Kotlin объекта Java Как использовать Kotlin в существующем приложении для Android? Как получить и найти текущее состояние на машине состояния Spring? Как организовать методы расширения Kotlin Kotlin inheritnce – Не передано значение для контекста параметра Неправильный вывод для параметра типа reified в Котлине Преобразуйте MainActivity с помощью панели действий / панели инструментов и кнопки с плавающей точкой в ​​Anko Проблема с расширением метода в скрипте Котлин Наблюдатель LiveData не срабатывает при обратном вызове Есть ли способ развернуть серверное приложение бэкэнд (Kotlin) в Firebase? Как сопоставить строку JSON с Kotlin Map В библиотеке Injekt для Kotlin, как мне создать локальные области, например, для каждой активности Android? Частный геттер и публичный сеттер для собственности Котлин Внедрение типизированного класса, параметризованного абстрактным типом

Как вернуть значение из функции в 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.

Я знаю, что unit – это возвращаемый по умолчанию тип в kotlin. Как я могу изменить это на boolean.

Kotlin может только вывести возвращаемый тип функции, когда ее выражение, поэтому, если ваша функция имеет тело, вам нужно указать возвращаемый тип после функции paramameters

 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 }