Лямбда-выражения обычно не имеют явного оператора return
.Вместо этого возвращаемое значение является просто результатом последнего (или единственного) выражения, поэтому вам просто нужно это:
{ a, b -> a < b }
Если вы действительно хотите явное return
, вы должны квалифицировать его как этикетки .Kotlin автоматически создает один для вас;его имя - это функция, которую вы передаете лямбда:
{ a, b -> if (a < b) return@max true else return@max false }
Обратите внимание, что у вас должна быть деталь else
;в противном случае, Kotlin не знает, что вернуть, если сравнение ложно.
Или потому, что if
является выражением:
{ a, b -> return@max if (a < b) true else false }
... но конструкции if (x) true else false
обескуражен, потому что это эквивалентно просто x
.
Немаркированный возврат всегда возвращается из включающей «правильной» функции, а не из лямбды.