将变量分配给函数调用实际上是先调用该函数,还是先存储它(以便可以调用)?
例如:
val userData = GraphRequest.newMeRequest(
accessToken,
object : GraphRequest.GraphJSONObjectCallback {
override fun onCompleted(`object`: JSONObject?, response: GraphResponse?) {
Log.d(TAG, `object`.toString())
}
}
)
实际上打电话给GraphRequest.newMeRequest()
吗?
答案 0 :(得分:2)
是的,该代码首先调用GraphRequest.newMeRequest()
,然后将其结果分配给userData
。
通常,每当您在函数名称(或lambda)之后看到parens时,都会调用该函数。
如果您想在不调用函数 的情况下进行引用(例如稍后调用,或者返回或传递给另一个函数),则可以使用GraphRequest::newMeRequest
。然后,您需要在调用它时传递相关的参数。
更多信息here。
答案 1 :(得分:1)
是的,这将调用GraphRequest.newMeRequest(..)
方法并将结果立即分配给userData
。如果要稍后再初始化该字段,但仅在首次访问该字段时初始化,请使用lazy delegate。
val userData by lazy { /* call method */ }