在C#中,有这个伟大的语言功能称为“显式接口实现”,它允许您实现两个或多个接口方法名称冲突的接口。它还可以使方法在使用封闭类型的对象调用它时执行一件事,并在将其转换为接口类型然后调用该方法时执行另一件事。我想知道 Swift 中是否有这样的东西。这与斯威夫特的意识形态有冲突吗?
基本上我想做这样的事情:
struct Job: CustomStringConvertible {
var location: String
var description: String
var CustomStringConvertible.description: String {
return "Work Location: \(self.location), description: \(self.description)"
}
}
Job(location: "Foo", description: "Bar").description // "Bar"
(Job(location: "Foo", description: "Bar") as CustomStringConvertible).description // "Work Location: Foo, description: Bar"
I found this在互联网上,但我认为这不相关,因为它似乎是关于在子类中强制方法重写。
协议扩展基本上已经完成了您所描述的操作:
protocol Cat {
}
extension Cat {
func quack() {
print("meow")
}
}
class Duck : Cat {
func quack() {
print("quack")
}
}
let d = Duck()
d.quack() // quack
(d as Cat).quack() // meow
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)