繁体   English   中英

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使用if else绝对容易使用else在这里...您不会从引入立即执行的lambda中获得任何收益:

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

还要注意,许多函数使用inline只是为了克服与lambda相关的运行时惩罚...因此,在开始喜欢lambda并将其在各处使用之前,您可能还需要阅读有关inline

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM