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 并在任何地方使用它之前,您可能还想阅读相关内容。
此代码的第二个参数必须是一个字符串,并且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 并在任何地方使用它之前,您可能还想阅读相关内容。