0
我正在爲我們的API做封裝。這個想法是將所有路由定義爲枚舉,並將對象返回到任何被調用的地方。設置爲變量時是否執行了一個閉包?
這種模式的一個例子:
//MARK: PUT requests
@discardableResult
static func put(_ route: API.Route.put) -> DataRequest {
var request:() -> DataRequest
switch route {
case .location(let location):
let params = ["lat":location.coordinate.latitude, "long":location.coordinate.longitude]
let url = baseUrl + endpoint(for: route)
request = { Alamofire.request(url, method: .put, parameters: params) } //<< Is this block executed as I set it?
}
return request().responseJSON(completionHandler: { request in log(request)})
}
,因爲我想返回請求之前執行一些記錄,我想保持請求關閉返回請求,以不啓動該請求,直到我把它返還。我的想法是,作爲變量傳遞的請求閉包不會被執行。
但是,當我在Playground中運行類似的功能時,它似乎會執行兩次。一旦我將其設置爲request
,並且當我使用它時。
如果是這樣的話,我執行網絡呼叫兩次,這顯然我不打算。
當我調用它時,閉合是否會觸發,當我調用它時,還是僅僅是一個XCode操作bug?