如何定义要用作类型的协议

时间:2015-07-28 13:26:35

标签: swift

我看到了这个工作代码(Swift 1.2)

var itemToPrint : Printable
itemToPrint = 105.0
println( itemToPrint )

所以我尝试了这个:

protocol AProtocol {
   var value: Int
}
var myVarProtocol: AProtocol
myVarProtocol = 155

我收到了错误

  

:10:17:错误:无法将“Int”类型的值赋给“AProtocol”类型的值

我需要对AProtocol做什么才能使协议作为一种类型工作(如果我的措辞正确的话)?

1 个答案:

答案 0 :(得分:0)

这是可以预料到的,因为您创建的变量可以存储符合您协议的任何类型,但您尝试为其分配类型(Int)不

在这种情况下,您必须手动将AProtocol的一致性添加到Int。请记住,您已经定义了一个协议,声明任何符合它的类型都必须实现value变量,因此您必须为value添加任何类型的定义我想在这里工作。

protocol AProtocol {
    var value: Int { get }
}

extension Int: AProtocol {
    var value: Int {
        return self
    }
}

var myVarProtocol: AProtocol
myVarProtocol = 155
print(myVarProtocol) // 155