我正在尝试扩展Swift中现有类型的功能。我想使用点语法来调用类型上的方法。
我想说:
existingType.example.someMethod()
existingType.example.anotherMethod()
我目前正在使用这样的扩展程序:
extension ExistingType {
func someMethod() {
}
func anotherMethod() {
}
}
existingType.someMethod()
existingType.anotherMethod()
这样做会暴露太多功能。所以,我想在类中编写这些方法,只需扩展ExistingType即可使用该类的实例。我不确定正确的方法。
如果我实际实现现有类型,我会执行以下操作:
struct ExistingType {
var example = Example()
}
struct Example {
func someMethod() {
}
func anotherMethod() {
}
}
允许我通过以下方式调用方法:
let existingType = ExistingType()
existingType.example.someMethod()
问题是我没有实现该类型,因为它已经存在。我只需要扩展它。
答案 0 :(得分:1)
看起来您正在尝试添加另一个属性example
现有的类ExistingType
并调用该属性的方法。但是,您无法在扩展中添加属性。将另一个属性添加到现有类的唯一方法是将其子类化。
答案 1 :(得分:0)
您可以创建新的struct
。
struct NewType {
let existingType: ExistingType
func someMethod() {
}
func anotherMethod() {
}
}