在 kotlin 中处理可以 return null 的对象

handle a object that can return null in 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 版本中用户是否恰好为 null。我是否需要一个 if 条件来检查用户是否为空?

我可以将功能作为一条线

   fun getAuthUserEmail(): String? {
       return FirebaseAuth.getInstance().currentUser.email?
    }

调用函数是否需要处理可能来自函数 return 的空字符串?

非常感谢您的任何建议

Should I need to have an if condition to check if the user is null?

根据 Firebase 的文档:

Returns the currently signed-in FirebaseUser or null if there is none.

Use getCurrentUser() != null to check if a user is signed in.

所以,这取决于你想在没有登录用户时如何处理。

如果你希望函数是单行的,你可以像这样链接它:

fun getAuthUserEmail(): String? {
    return FirebaseAuth.getInstance().currentUser?.email
}

如果 currentUser 为空或 currentUser?.email 为空,它将 return 为空。


编辑:如果您只是想 return 发送电子邮件(如果存在)。写成一行就可以了,因为safe calls可以串起来

小建议。如果您确定对象不应为空,但可以为空,请使用 !! 将对象标记为不应为空的对象。如果应用程序崩溃没关系,因为它向您表明您在某些地方执行不当。查看您的实现结构以了解对象是否应为 null,许多开发人员过度使用 objet?.let 而没有查看此对象是否应为 null

I am just wondering in my kotlin version if the user happens to be null. Should I need to have an if condition to check if the user is null?

取决于你将如何处理场景的情况,但你可以形成 您的数据 Elvis Operator 方式如下:

fun getAuthUserEmail(): String? {
    return FirebaseAuth.getInstance().currentUser?.email ? "No data"
}