我有2个类,它们具有相同数量的同名属性。我想访问没有类型转换的属性。
class A : NSObject {
var amount : Int = 10
}
class B : NSObject {
var amount : Int = 20
}
现在我想将amount属性的值加倍,如此
main() {
let classA : A()
print(doubleValue(classA))
let classB : B()
print(doubleValue(classB))
}
func doubleValue(myClass:AnyObject) -> Int {
return myClass.amount * 2
}
请建议我如何实现这一目标。
答案 0 :(得分:3)
这正是协议的用途。让我们调用此新协议Amountable
并添加amount
属性。
protocol Amountable {
var amount: Int { get set }
}
如果您想为doubleValue()
提供默认实现,您可以按如下方式使用协议扩展:
extension Amountable {
mutating func doubleValue() {
self.amount *= 2
}
}
最后,让你的类符合协议:
class ClassA: Amountable {
// Implementation of classA here
}
class ClassB: Amountable {
// Implementation of classB here
}
objectA = ClassA()
objectA.doubleValue()