gpt4 book ai didi

swift - 在不使用签名中的类型的情况下创建约束初始化器

转载 作者:行者123 更新时间:2023-11-28 11:34:52 28 4
gpt4 key购买 nike

这是我的代码:

protocol SimpleInit {
init()
}

class Person {}

class Lizard<T: Person> {
let person: T

init(person: T) {
self.person = person
}

// error: 'where' clause cannot be attached to a non-generic declaration
init() where T: SimpleInit {
self.person = T.init()
}
}

是否有可能我有一个 Person 的子类,它符合 SimpleInit,后来构造了一个 Lizard 而没有传递一个实例Person 到构造函数?如果 Person 的类型符合 SimpleInitLizard 应该能够创建一个 Person

最佳答案

您只需要将您的初始化器移动到条件扩展中:

protocol SimpleInit {
init()
}

class Person {
required init() {}
}

class Lizard<T: Person> {
let person: T

required init(person: T) {
self.person = person
}

}

extension Lizard where T: SimpleInit {
convenience init() {
self.init(person: T.init())
}
}

关于swift - 在不使用签名中的类型的情况下创建约束初始化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55751549/

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