Единица Kotlin не возвращает строку - PullRequest
0 голосов
/ 19 декабря 2018

Второй параметр этого кода должен быть строкой, и email, и currentGroup не являются нулевыми или пустыми.когда я использую обычный оператор if else, он работает.Но когда я использую kotlin lambdas, я получаю ошибку.Я также попытался добавить .toString() в конце второго параметра, но безуспешно.

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

Я также попытался записать второй параметр и получил следующие выходные данные: Function0<java.lang.String>

1 Ответ

0 голосов
/ 19 декабря 2018

Из вашего последнего комментария ясно, что вашим вторым параметром вашей функции является String, поэтому либо используйте String напрямую, либо вызовите лямбду, например:

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 здесь ... вы не получите ничего от введения лямбда-выражений, которые просто выполняются немедленно:

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

Обратите внимание, что многие функции используют inline только для того, чтобы преодолеть штрафы за время выполнения, связанные с лямбдами ... так что вы можете прочитать об этом тоже, прежде чем начинать любить лямбды и использовать их повсюду.

...