Присвоение вызова функции переменной в Kotlin - PullRequest
0 голосов
/ 30 мая 2019

Действительно ли присвоение переменной вызову функции вызывает функцию или просто сохраняет ее (так что она готова к вызову)?

Например, делает:

val userData = GraphRequest.newMeRequest(
    accessToken,
    object : GraphRequest.GraphJSONObjectCallback {
        override fun onCompleted(`object`: JSONObject?, response: GraphResponse?) {
            Log.d(TAG, `object`.toString())
        }

    }
)

на самом деле звоните GraphRequest.newMeRequest()?

Ответы [ 2 ]

2 голосов
/ 30 мая 2019

Да, этот код сначала вызывает GraphRequest.newMeRequest() и присваивает свой результат userData.

Как правило, каждый раз, когда вы видите символы переноса после имени функции (или лямбды), которая будет вызывать функцию.

Если вы хотите ссылку на функцию без вызова (например, для вызова позже или для возврата или передачи другой функции), вы можете использовать GraphRequest::newMeRequest.Затем вам нужно будет передать соответствующие аргументы при вызове.

Дополнительная информация здесь .

1 голос
/ 30 мая 2019

Да, это вызовет метод GraphRequest.newMeRequest(..) и сразу назначит результат для userData. Если вы хотите, чтобы поле было инициализировано позднее, но только при первом доступе к полю, используйте ленивый делегат .

val userData by lazy { /* call method */ }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...