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