gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 06:19:53 25 4
gpt4 key购买 nike

我试图了解这个自定义导航栏/分页 View 的工作原理,发现 here .当我浏览 README 时,让我感到困惑的是设置类似 tinder 的自定义行为:

// 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
}
})

我不明白为什么在设置给 Controller 的闭包周围有括号?.pagingViewMoving 属性。

当我查看 SLPagingViewSwift.swift 时文件,.pagingViewMoving 属性设置为此别名:

public typealias SLPagingViewMoving = ((subviews: [UIView])-> ())

函数类型之外的额外括号集有什么作用?

最佳答案

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

如果函数本身接受一个闭包参数,则闭包简单地位于包含函数参数的括号内。

因此,多亏了将闭包作为其最后(或唯一)参数的语法高阶函数,它们以两种方式表示 - 在参数括号内或所谓的尾随闭包。考虑以下功能:

func foo(bar: (Int -> Int)) {...}

它可以通过两种方式调用 - 首先是括号中的闭包,如下所示:

foo({(i) in i + 2})

或作为尾随闭包:

foo {(i) in i + 2}

关于swift - 闭包周围的括号是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35878915/

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