1
Android Studio 3.0

我有我正在为我的项目转换为 Kotlin 的 java 代码。

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?
    }

调用函数是否需要处理可以从函数返回的空字符串?

非常感谢您的任何建议

4

3 回答 3

1

我是否需要有一个 if 条件来检查用户是否为空?

根据 Firebase 的文档:

返回当前登录的 FirebaseUser,如果没有,则返回 null。

使用 getCurrentUser() != null 检查用户是否已登录。

因此,这取决于您在没有登录用户时要如何处理。

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

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

currentUser如果为 null 或为 null ,它将返回currentUser?.emailnull。


编辑:如果您只想返回电子邮件(如果存在)。写在一行中是可以的,因为可以链接安全调用。

于 2017-08-08T15:22:27.190 回答
1

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

于 2017-08-09T10:20:37.950 回答
1

我只是想知道在我的 kotlin 版本中用户是否恰好为空。我是否需要有一个 if 条件来检查用户是否为空?

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

fun getAuthUserEmail(): String? {
    return FirebaseAuth.getInstance().currentUser?.email ? "No data"
}
于 2017-08-09T13:31:45.233 回答