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?
}
调用函数是否需要处理可以从函数返回的空字符串?
非常感谢任何建议
答案 0 :(得分:1)
我是否需要if条件来检查用户是否为空?
根据Firebase的文档:
返回当前已登录的FirebaseUser,如果没有,则返回null。
使用getCurrentUser()!= null检查用户是否已登录。
因此,它取决于您没有登录用户时的处理方式。
如果您希望函数是单行的,可以像这样链接:
fun getAuthUserEmail(): String? {
return FirebaseAuth.getInstance().currentUser?.email
}
如果currentUser
为空或currentUser?.email
为空,则返回null。
编辑:如果您只想返回电子邮件(如果存在)。可以将它写在一行中,因为safe calls可以链接。
答案 1 :(得分:1)
小建议。如果您确定对象不应为null,但可以为空,请使用!!
将对象标记为不应该为null的对象。如果应用程序崩溃它是可以的,因为它告诉你你做了一些糟糕的实现。看一下你的实现结构,知道wheter对象应该为null,很多开发人员过度使用objet?.let
而不查看这个对象是否应为null
答案 2 :(得分:1)
如果用户恰好是我的kotlin版本,我只是想知道 空值。我是否需要if条件来检查用户是否 空?
取决于你将如何处理场景,但你可以形成 您的数据采用Elvis Operator方式,如下所示:
fun getAuthUserEmail(): String? {
return FirebaseAuth.getInstance().currentUser?.email ? "No data"
}