无法通过扩展向Swift中的结构添加初始值设定项

无法通过扩展向Swift中的结构添加初始值设定项,swift,struct,initializer,Swift,Struct,Initializer,我试图将带有“center”和“size”作为参数的方便初始值设定项添加到Struct Rect的扩展中,但它显示错误,要求使用“origin”和“size”作为参数的初始化器。 RunSwift编译器中显示的错误: /var/folders/_x/3ll0j9g13tqfr6lj42jh8qjc0000gn/T/9799.swift:19:17: error: incorrect argument label in call (have 'centre:size:', expected 'or

我试图将带有“center”和“size”作为参数的方便初始值设定项添加到Struct Rect的扩展中,但它显示错误,要求使用“origin”和“size”作为参数的初始化器。 RunSwift编译器中显示的错误:

/var/folders/_x/3ll0j9g13tqfr6lj42jh8qjc0000gn/T/9799.swift:19:17: error: incorrect argument label in call (have 'centre:size:', expected 'origin:size:')
let cRect = Rect(centre: Point(x: 2.5, y: 2.5), size: Size(width: 5.0, height: 5.0))
                ^~~~~~~
                 origin
代码如下:

    struct Point {
    var x = 0.0
    var y = 0.0
}
struct Size {
    var width = 0.0
    var height = 0.0
}
struct Rect {
    var origin = Point()
    var size = Size()
    // var centre : Point {
    //     let x = origin.x + (size.width/2)
    //     let y = origin.y + (size.height/2)
    //     return Point(x: x,y: y)
    // }
}

let cRect = Rect(centre: Point(x: 2.5, y: 2.5), size: Size(width: 5.0, height: 
5.0))
print("cRect origin is = \(cRect.origin)")
extension Rect {
    init(centre: Point, size: Size){
        let originX = centre.x - (size.width)/2
        let originY = centre.y - (size.height)/2
        self.init(origin: Point(x: originX, y: originY), size : size)
    }
}

请帮忙。我被卡住了

只需将扩展部分移到代码前面调用init方法的地方(我假设您使用的是一个游乐场)


您只需在使用扩展定义之前将其放入。在swift中,我应该从何处开始跟踪程序?因为这里面没有main,这取决于环境、lldb(Swift RELP,Played)或swiftc(iOS,macOS等)。第一个将按顺序执行,而swiftc将提供一个链接器。好的,谢谢!这很有帮助:)
extension Rect {
  init(centre: Point, size: Size){
    let originX = centre.x - (size.width)/2
    let originY = centre.y - (size.height)/2
    self.init(origin: Point(x: originX, y: originY), size : size)
  }
}

let cRect = Rect(centre: Point(x: 2.5, y: 2.5), size: Size(width: 5.0, height: 5.0))
print("cRect origin is = \(cRect.origin)")