I want to know if there is any difference between any of these 2 declarations?
static var sessionConfiguration: URLSessionConfiguration = {
let myConfig = URLSessionConfiguration.default
let base64LoginString = EndpointController.getBase64StringLoginWithUserAndPasswordV2()
myConfig.httpAdditionalHeaders = ["Authorization" : base64LoginString]
return myConfig
}()
static func getURLSessionConfigurationDefault() -> URLSessionConfiguration {
let myConfig = URLSessionConfiguration.default
let base64LoginString = EndpointController.getBase64StringLoginWithUserAndPasswordV2()
myConfig.httpAdditionalHeaders = ["Authorization" : base64LoginString]
return myConfig
}
CodePudding user response:
In the var t = { }() syntax: the { } is a function that returns a value, and the () is calling that function once to set the initial value of the variable t. You can change t to something else later, because it's a var. That syntax is like var a = 42 but instead of 42 you set it to the result of running a function, like: { return 42 }() but that function isn't run every time you read (or write) the value t
The getURLSessionConfigurationDefault() -> URLSessionConfiguration is always creating a new instance of something and returning that new instance - the result of the function.
