面向Swift协议的编程,解决命名冲突

时间:2016-02-05 12:38:50

标签: ios swift protocols

我使用面向协议编程进行了一些尝试并遇到了一个很常见的案例,但我不知道如何解决它。下面我有2个协议,如果类打算实现协议,则都需要一个名为param的var。但在协议中,var param是两种不同的类型。那么如何在不必更改协议的情况下实现这两者呢?这是代码:

protocol firstProtocol
{
    var param:Int { get set }
}

protocol secondProtocol
{
    var param:String { get set }
}

class protocolImplementer: firstProtocol, secondProtocol
{
    var param:String = "foo"
    var param:Int = 0 // Invalid redeclaration of 'param'
}

1 个答案:

答案 0 :(得分:0)

你做不到。 一个类不能有2个具有相同名称的变量。编译器如何决定从某个地方调用时引用哪个变量? 虽然它们具有不同的参数,但可以使用这些方法。