Используя Spark , я получаю немного кода вроде этого:
post("/auth/login", { req, res -> val body = parseBody(req.body()) val assertion = body["assertion"] if (assertion == null) { halt(400) return null } // ...snip...lots more code })
Это отлично работает, за исключением того, что … он не компилируется – я получаю 'return' is not allowed here
.
Я мог бы положить оставшуюся часть лямбды в else
блок, но я бы предпочел не в интересах минимизации отступов.
Итак, как мне «закоротить» лямбду, чтобы вернуть нуль?
В моем понимании, Lambda can not use return, return для функции по умолчанию.
Поэтому вам нужно использовать метку, чтобы сообщить предложение return, где оно будет возвращено. Я использую это:
f@ { ... return@f null }
Я обнаружил, что это похоже на работу, хотя это немного более многословно:
post("/auth/login", fun(req, res): Any? { val body = parseBody(req.body()) val assertion = body["assertion"] if (assertion == null) { halt(400) return null } // ...snip...lots more code return null // or whatever })