Swift 函数语法分解

标签 swift syntax

我提前为这个问题的标题道歉。

我希望在 Swift 中对函数的某些语法元素进行分割。

函数:

let call:NSURLSessionDataTask = session.dataTaskWithRequest(request) {
    data, response, error in

    if error != nil {
        println("error=\(error)")
        return
    }

    println("response = \(response)")
}

我想知道逐行,元素如何影响常量?

我看到的;

1) 一个常量被设置为函数 (session.dataTaskWithR...) 的结果,带有一个“请求”参数,后跟似乎是闭包函数的开始 { 触发时执行。 (使用 call.resume())

2) 这些是函数的声明变量吗?他们被分配到这里了吗?在函数或对象的顶部写入“数据、响应、错误”似乎很奇怪,我假设/知道这些填充了从 session.dataTas.. 调用返回的数据。看起来好像它们未声明且未键入。

4) 这看起来很直接,如果错误不为零,打印错误并退出。

9) 打印响应头。

所以,我想我的主要问题是关于第 2 行的。我认为只写变量名没有任何意义,除了它是如何完成的。这就是它的完成方式吗?

最佳答案

你用错了“闭包”这个词。 Swift 中的所有函数都是闭包。这个函数的特别之处在于它是匿名的。这意味着没有声明行——所以需要有另一种方式来表达传入的参数。 Swift 的解决方案是将参数列表(可能还有返回类型)放在函数体开头的 in 行中。

Seems weird to just write "data,response,error" at the top of a function or object, I assume/know these are populated with data returned from the session.dataTas.. call. It just seems as though they are undeclared and not typed.

正确。它们可以明确地类型化,但它们不必在这种情况下,因为类型已经为编译器所知;它已经知道 session.dataTaskWithRequest: 的参数是什么(包括它作为第二个参数的函数的参数类型)。

关于Swift 函数语法分解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30514847/

相关文章:

c++ - 默认初始化数据成员是对象?

使用特殊字符的 PHP 变量/函数/类名

bash - 在变量赋值的 RHS 上引用与不引用变量

ios - 尝试使用 Realm 时应用程序崩溃 SIGABRT

excel - range.copy 目标 "A1"与 "Cells(1,1)"Excel/VBA

ios - 使用 AVAssetReader 从 iPad 上的视频中读取帧时,图像方向不正确

通过 HTTP POST 数据时出现 Swift 4 错误

perl - Perl 中的双下划线是什么?

swift - didSet 观察者在初始化属性时不会被调用

ios - 如何创建具有相同纹理的多个 Sprite (节点),并在删除一个节点时自动生成一个新的 Sprite ?