Android Kotlin单元未返回字符串

Android Kotlin单元未返回字符串,android,lambda,parse-platform,kotlin,Android,Lambda,Parse Platform,Kotlin,此代码的第二个参数必须是字符串,并且email和currentGroup都不为null或空。当我使用正常的if-else语句时,它是有效的。但是当我使用kotlin lambdas时,我得到了一个错误。我还尝试在第二个参数的末尾添加.toString(),但没有成功 query.whereEqualTo("currentGroup",{ if (isAdmin) email else currentGroup }) 我还尝试记录第二个参数,并得到以下输出: Function0从您上次的

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

query.whereEqualTo("currentGroup",{
    if (isAdmin) email else currentGroup
})
我还尝试记录第二个参数,并得到以下输出:
Function0

从您上次的评论中可以清楚地看出,您函数的第二个参数是一个
字符串
,因此可以直接使用
字符串
,也可以调用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
显然更容易。。。您不会从引入lambda中获得什么好处,这些lambda只是立即执行:

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

还请注意,许多函数仅用于克服与lambdas相关的运行时惩罚。。。因此,在您开始喜欢lambda并在任何地方使用它之前,您可能也希望了解这一点。

第二个参数是lambda。。。这就是
{}
的含义。尝试删除它。你为什么要用lambda?这里似乎不需要。事实上,这更多的是我的好奇心。我想从lambda单元返回一个字符串,然后使用一个函数接受lambda并返回一个值,比如
run
(或者自己用
()
)调用它)。您将无法将lambda“转换”为字符串。谢谢。在我的单位前面推铅球
。您可以将您的评论作为答案发布。