处理一个可以在kotlin中返回null的对象
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版本,如果用户恰好为null。 我是否需要有一个if条件来检查用户是否为空?
我可以把这个功能当作一条线
fun getAuthUserEmail(): String? { return FirebaseAuth.getInstance().currentUser.email? }
而调用函数是否需要处理可能从函数返回的空字符串?
非常感谢您的任何建议
我是否需要有一个if条件来检查用户是否为空?
根据Firebase的文档:
返回当前登录的FirebaseUser;如果没有,则返回null。
使用getCurrentUser()!= null来检查用户是否登录。
所以,这取决于你在没有登录用户的情况下如何处理。
如果你想要这个函数是一行,你可以像这样链接它:
fun getAuthUserEmail(): String? { return FirebaseAuth.getInstance().currentUser?.email }
如果currentUser
为null或currentUser?.email
,它将返回null currentUser?.email
为null。
编辑:如果你只是想返回电子邮件,如果它存在。 可以将它写在一行中,因为安全的调用可以链接在一起。
小建议。 如果你确定对象不能为null,但是可以为空,请使用!!
将对象标记为不应该为null的对象。 如果应用程序崩溃它是好的,因为它表明你做了一个糟糕的实施。 看看你的实现的结构,以知道什么时候对象应该是null或者没有,很多开发者过度使用objet?.let
而不看这个对象是否应该为null
我只是想知道我的kotlin版本,如果用户碰巧是空的。 我是否需要有一个if条件来检查用户是否为空?
取决于你如何处理场景,但是你可以用Elvis Operator的方式来形成你的数据如下:
fun getAuthUserEmail(): String? { return FirebaseAuth.getInstance().currentUser?.email ? "No data" }