我有2个类,它们具有相同名称的相同数量的属性。我想访问属性而不进行类型转换。
class A : NSObject {
var amount : Int = 10
}
class B : NSObject {
var amount : Int = 20
}
现在我想将数量属性的值加倍
main() {
let classA : A()
print(doubleValue(classA))
let classB : B()
print(doubleValue(classB))
}
func doubleValue(myClass:AnyObject) -> Int {
return myClass.amount * 2
}
请提出我该如何实现。
最佳答案
这正是所使用的协议。让我们将此新协议称为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()
关于ios - 如何在不进行类型强制转换的情况下从不同的类访问相同的属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37661816/