gpt4 book ai didi

swift - "Ambiguous use of ' propertyName '"错误给出了 didSet 观察者覆盖的属性

转载 作者:IT王子 更新时间:2023-10-29 05:04:59 26 4
gpt4 key购买 nike

我有一个简单的场景,其中我有一个父类 Person,它定义了一个名为“name”的属性并包含一个“didSet”观察者...

class Person {

var name: String? {
didSet {
println("Person name was set.")
}
}

init() {}
}

我还有一个名为 Employee 的 Person 子类,它为“name”属性添加了自己的“didSet”观察器,以便它可以监视对该属性的更改...

class Employee: Person {

override var name: String? {
didSet {
println("Employee name was set.")
}
}

}

当我尝试运行代码时出现编译错误,但我不知道为什么或如何修复它。这是练习这些类的代码...

var person = Person()
person.name = "Bob"

var employee = Employee()
employee.name = "Sally" // results in "Ambiguous use of 'name'" compile error

最佳答案

在我的案例中,我可以通过转换为基类来解决这个问题:

(employee as Person).name = "Sally"

这似乎仍然对子类进行了正确的分派(dispatch)。例如:

class Person {
var name: String {
return "person"
}
}

class Employee: Person {
override var name: String {
return "employee"
}
}

let bob = Person()
let alice = Employee()

println((alice as Person).name) // prints "employee"

关于swift - "Ambiguous use of ' propertyName '"错误给出了 didSet 观察者覆盖的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24087011/

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