Swift 闭包周围的括号是什么意思?

Swift 闭包周围的括号是什么意思?,swift,Swift,我正在试图了解这个自定义导航栏/页面视图是如何工作的。当我浏览自述文件时,让我大吃一惊的是设置了类似打火机的自定义行为: // Tinder Like controller?.pagingViewMoving = ({ subviews in for v in subviews { var lbl = v as UIImageView var c = gray if(lbl.frame.origin.x > 45 &&

我正在试图了解这个自定义导航栏/页面视图是如何工作的。当我浏览自述文件时,让我大吃一惊的是设置了类似打火机的自定义行为:

// Tinder Like
controller?.pagingViewMoving = ({ subviews in
    for v in subviews {
        var lbl = v as UIImageView
        var c = gray

        if(lbl.frame.origin.x > 45 && lbl.frame.origin.x < 145) {
            c = self.gradient(Double(lbl.frame.origin.x), topX: Double(46), bottomX: Double(144), initC: orange, goal: gray)
        }
        else if (lbl.frame.origin.x > 145 && lbl.frame.origin.x < 245) {
            c = self.gradient(Double(lbl.frame.origin.x), topX: Double(146), bottomX: Double(244), initC: gray, goal: orange)
        }
        else if(lbl.frame.origin.x == 145){
            c = orange
        }
        lbl.tintColor = c
    }
})

在函数类型之外,额外的一组括号做了什么?

在这种情况下,括号纯粹是为了清楚起见,不需要。这就像说
让a=(2+2)
。尽管这不应与以下情况中作为参数提供的闭包混淆

如果函数本身接受的参数是闭包,则闭包仅位于包含函数参数的括号内

因此,得益于语法,高阶函数将闭包作为其最后(或唯一)参数,并以两种方式表示-在参数括号内或称为尾随闭包。考虑以下功能:

func foo(bar: (Int -> Int)) {...}
可以通过两种方式调用它-首先使用括号中的闭包,如下所示:

foo({(i) in i + 2})
或作为尾随闭包:

foo {(i) in i + 2}

在这种情况下,括号纯粹是为了清楚起见,没有必要。这就像说
让a=(2+2)
。尽管这不应与以下情况中作为参数提供的闭包混淆

如果函数本身接受的参数是闭包,则闭包仅位于包含函数参数的括号内

因此,得益于语法,高阶函数将闭包作为其最后(或唯一)参数,并以两种方式表示-在参数括号内或称为尾随闭包。考虑以下功能:

func foo(bar: (Int -> Int)) {...}
可以通过两种方式调用它-首先使用括号中的闭包,如下所示:

foo({(i) in i + 2})
或作为尾随闭包:

foo {(i) in i + 2}