gpt4 book ai didi

ios - 在 Swift 中仅使用点分隔符调用方法

转载 作者:行者123 更新时间:2023-11-28 11:04:23 25 4
gpt4 key购买 nike

我无法理解 alamofire 库函数中的以下语法。

Alamofire.request(.GET, "https://someWebsite.com/api/", parameters: ["key":"2121"])
.responseJSON { response in
if let JSON = response.result.value {
print("JSON: \(JSON)")
}
}

为什么 responseJSON 方法没有前缀?而且,为什么这个方法在它的主体中有一个完成处理程序,它不应该是方法的参数吗?即

    .responesJSON( response in ... )

    .responseJSON(){respones in ....}

最佳答案

Why doesn't the responseJSON method have a prefix?

如果从编译器的角度来看,responseJSON 有一个前缀:responseJSON 是一种根据请求方法的结果调用的方法。由于回车和缩进,它似乎没有前缀,但您可以将 .responseJSON 函数放在请求方法的右括号之后。

这是 Alamofire 开发人员做出的设计选择:请求函数返回调用它的同一对象,因此您可以在同一对象上调用另一个函数,而无需重复 Alamofire 前缀。这在此类场景中很常见,您需要在同一对象上调用多个函数来进行设置。

why does this method have a completion handler in its body , shouldn't it be the method's parameter?

在 Swift 中,如果一个方法或函数的唯一参数是一个闭包(例如,一个完成处理程序),你可以做一个缩写并写成

.responseJSON { response in ... }

代替

.responseJSON ({response in ...})

.responseJSON(){ response in ...})

关于ios - 在 Swift 中仅使用点分隔符调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39107635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com