作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我很难理解下面的简单函数。神秘的“点”从何而来?
typealias Position = CGPoint
typealias Distance = CGFloat
typealias Region = Position -> Bool
func circle(radius: Distance) -> Region {
return { point in
sqrt(point.x * point.x + point.y * point.y) <= radius
}
}
最佳答案
circle
函数返回一个包含以下声明的闭包:
(Position) -> Bool
point
是传递给闭包的参数名称,Position
类型 - 也许重写函数如下更清楚:
func circle(radius: Distance) -> Region {
let closure: Region = { (point: Position) -> Bool in
return sqrt(point.x * point.x + point.y * point.y) <= radius
}
return closure
}
您可以将 circle
函数的返回值赋给一个变量:
let closure = circle(1.0)
然后调用它:
let p = CGPoint(x: 1.0, y: 1.0)
closure(p)
p
参数在闭包声明中被称为(并被引用为)point
关于ios - Swift - 重点从何而来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27974507/
我是一名优秀的程序员,十分优秀!