Обрабатывать объект, который может вернуть ноль в kotlin
Android Studio 3.0
У меня есть Java-код, который я конвертирую в Kotlin для моего проекта.
public String getAuthUserEmail() {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String email = null;
if (user != null) {
email = user.getEmail();
}
return email;
}
Я преобразовал это в koklin как это:
fun getAuthUserEmail(): String? {
val user: FirebaseUser? = FirebaseAuth.getInstance().currentUser
return user?.email
}
Мне просто интересно в моей версии kotlin, если пользователь оказывается нулевым. Должен ли я иметь условие if, чтобы проверить, является ли пользователь нулевым?
Я мог бы иметь функцию в одну строку
fun getAuthUserEmail(): String? {
return FirebaseAuth.getInstance().currentUser.email?
}
И нужно ли вызывающей функции обрабатывать пустую строку, которая может быть возвращена из функции?
Большое спасибо за любые предложения
3 ответа
Должен ли я иметь условие if, чтобы проверить, является ли пользователь нулевым?
Согласно документации Firebase:
Возвращает в настоящий момент зарегистрированный FirebaseUser или ноль, если нет ни одного.
Используйте getCurrentUser()!= Null, чтобы проверить, вошел ли пользователь в систему.
Таким образом, это зависит от того, как вы хотите обрабатывать, когда нет зарегистрированного пользователя.
Если вы хотите, чтобы функция была однострочной, вы можете связать ее так:
fun getAuthUserEmail(): String? {
return FirebaseAuth.getInstance().currentUser?.email
}
Он вернет ноль, если currentUser
является нулевым или currentUser?.email
нулевой.
Изменить: Если вы просто хотите вернуть электронное письмо, если оно существует. Можно написать это одной строкой, поскольку безопасные вызовы могут быть связаны.
Небольшой совет. Если вы уверены, что объект не должен быть нулевым, но может иметь значение null, используйте !!
пометить объект как объект, который не должен быть нулевым. Если приложение аварийно завершает работу, это нормально, так как оно показывает, что у вас была плохая реализация. Посмотрите на структуру вашей реализации, чтобы понять, должен ли объект быть нулевым или нет, слишком много разработчиков objet?.let
не смотря, должен ли этот объект быть нулевым или нет
Мне просто интересно в моей версии kotlin, если пользователь оказывается нулевым. Должен ли я иметь условие if, чтобы проверить, является ли пользователь нулевым?
Зависит от случая, как вы собираетесь обрабатывать сценарий, но вы можете сформировать свои данные в Elvis Operator следующим образом:
fun getAuthUserEmail(): String? {
return FirebaseAuth.getInstance().currentUser?.email ? "No data"
}