Инициализация члена поля в Kotlin, который является функцией - PullRequest
0 голосов
/ 09 января 2019

Новый для Kotlin, я видел этот код:

val myModule : Module = module {
  viewModel { MyViewModel(get()) } 
  single { MyRepository() }
}

Глядя на документы Kotlin, мне не ясно, что означают фигурные скобки после «модуля». Является ли модуль функцией, а фигурные скобки используются для инициализации функции? Если это правда, можете ли вы указать мне на часть в документации Kotlin, которая указывает на это? Я не могу найти ничего в документах, которые показывают пример этого. Вот ссылка:

https://kotlinlang.org/docs/reference/properties.html

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Обратите внимание, что ваш пример выглядит как Код Koin .

В более общем смысле: В kotlin, когда последним параметром функции является другая функция (см. Функции высшего порядка ), вы можете поместить ее за пределы круглых скобок, а если это единственный (не обязательный) параметр, то вы можете легко опустить скобки.

В вашем примере module viewModel и single - это функции, которые принимают в качестве единственного параметра другую функцию, так что вы можете передать лямбду, определяющую этот параметр, напрямую без скобок.

0 голосов
/ 09 января 2019

Скобки означают, что функция module получает лямбду в качестве параметра. http://kotlinlang.org/docs/reference/lambdas.html#passing-a-lambda-to-the-last-parameter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...