Kotlin内联函数用于检查用户是否真实



我想在检查用户是否经过身份验证后执行一段代码。类似这样的东西:

inline fun <T : Any, R> T?.isUserAuthenticated(callback: (T) -> R) {
FirebaseAuth.getInstance().currentUser?.let {
//Function call
} ?: kotlin.run {
FirebaseAuth.getInstance().signInAnonymously().addOnSuccessListener { 
//Function call
}
}

这种方法不起作用,但有其他选择吗?

在以下情况下,Kotlin中的内联函数应用于常规函数:

  • 您迫切需要更有效地分配内存
  • 当一个函数接受另一个函数或lambda作为参数时
  • 您需要防止创建对象并拥有更好的控制流

否则,内联可能会导致生成的代码增长。很可能还有其他情况值得使用内联函数,但我只添加了其中的一些(重要的(函数。

当涉及到检查用户是否经过身份验证时,我宁愿创建一个如下所示的常规函数:

fun getAuthState() = auth.currentUser != null

并使用它:

val isAuthenticated = getAuthState()
if(!isAuthenticated) {
auth.signInAnonymously().addOnCompleteListener(/*...*/)
}

或者如果使用Kotlin Coroutine:

if(!isAuthenticated) {
auth.signInAnonymously().await()
}

所以这是一种或另一种方法。

我会在存储库类中添加这个函数,这样它就可以在整个项目中使用。

如果你有兴趣查看一些代码,我建议你查看以下资源:

  • 如何使用JetpackCompose在干净的架构中处理Firebase身份验证

这是相应的回购。

最新更新