gpt4 book ai didi

swift - 无法通过扩展将初始值设定项添加到 Swift 中的结构

转载 作者:行者123 更新时间:2023-11-30 10:53:53 25 4
gpt4 key购买 nike

我试图将以“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 方法的代码之前(我假设您正在使用 Playground)

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)")

关于swift - 无法通过扩展将初始值设定项添加到 Swift 中的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54170262/

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