Kotlin 单元不返回字符串

Kotlin unit not returning string

此代码的第二个参数必须是一个字符串,并且email 和currentGroup 都不为null 或为空。当我使用普通的 if else 语句时,它起作用了。但是当我使用 kotlin lambdas 时,我得到了一个错误。我还尝试在第二个参数的末尾添加 .toString() 但没有成功。

query.whereEqualTo("currentGroup",{
    if (isAdmin) email else currentGroup
})

我还尝试记录第二个参数并得到以下输出: Function0<java.lang.String>

从你最后的评论中可以清楚地看出你的函数的第二个参数是 String,所以要么直接使用 String 要么调用你的 lambda,例如:

query.whereEqualTo("currentGroup",{
  if (isAdmin) email else currentGroup
}()) // see the ()? Alternatively/Preferably you may use run {} here, as it is already an inline function (see below)

但是在这里使用 if-else 肯定更容易......你不会从引入立即执行的 lambdas 中获得任何东西:

query.whereEqualTo("currentGroup",
  if (isAdmin) email else currentGroup
)

另请注意,许多函数使用 inline 只是为了克服与 lambda 相关的运行时惩罚......所以在您开始喜欢 lambda 并在任何地方使用它之前,您可能还想阅读相关内容。