В Kotlin синтаксис объявления функции позволяет вам писать знак равенства перед фигурными фигурными скобками. Рассмотрим эти два примера:
-
Без знака
=:fun foo() { bar() println("baz") }Код внутри тела запускается путем вызова
foo(). -
С знаком
=:fun foo() = { bar() println("baz") }Здесь, когда вызывается
foo(), ничего не происходит, но чтобы получить выполненное тело, можно написатьfoo()().
В чем разница в этих двух объявлениях и , почему они ведут себя по-другому?
Этот вопрос, хотя и не имеет большого значения, преднамеренно задан и ответил автору, потому что несколько вопросов уже опубликованы, где люди получили проблемы из-за неправильного определения функций.