在Kotlin中将函数调用分配给变量

时间:2019-05-30 07:50:39

标签: java kotlin

将变量分配给函数调用实际上是先调用该函数,还是先存储它(以便可以调用)?

例如:

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

    }
)

实际上打电话给GraphRequest.newMeRequest()吗?

2 个答案:

答案 0 :(得分:2)

是的,该代码首先调用GraphRequest.newMeRequest(),然后将其结果分配给userData

通常,每当您在函数名称(或lambda)之后看到parens时,都会调用该函数。

如果您想在不调用函数 的情况下进行引用(例如稍后调用,或者返回或传递给另一个函数),则可以使用GraphRequest::newMeRequest。然后,您需要在调用它时传递相关的参数。

更多信息here

答案 1 :(得分:1)

是的,这将调用GraphRequest.newMeRequest(..)方法并将结果立即分配给userData。如果要稍后再初始化该字段,但仅在首次访问该字段时初始化,请使用lazy delegate

val userData by lazy { /* call method */ }