使用Swift 3.0,我们现在声明CGPoints如下:
CGPoint(x: 1.0, y: 0.0)
Run Code Online (Sandbox Code Playgroud)
这是,呃...有点啰嗦.当你编写一个以CGPoint作为参数的函数时,事情变得非常丑陋:
myObject.callMyFunc(someVar: 1, point1: CGPoint(x: 1.0, y: 0.0), point2: CGPoint(x: 1.0, y: 2.0))
Run Code Online (Sandbox Code Playgroud)
是否有像CGPoint和CGRect这样的结构的简写?
正如评论中已经建议的那样,您可以创建自己的扩展.
您可以添加一个接受2的初始值设定项,CGFloat(s)不需要外部参数名称
extension CGPoint {
init(_ x: CGFloat, _ y: CGFloat) {
self.x = x
self.y = y
}
}
let point = CGPoint(1, 2)
Run Code Online (Sandbox Code Playgroud)
您还可以定义中缀运算符
infix operator ° {}
func °(x: CGFloat, y: CGFloat) -> CGPoint {
return CGPoint(x: x, y: y)
}
let point = 1.1 ° 1.1
Run Code Online (Sandbox Code Playgroud)