2015-09-01 34 views
0

如何创建一个协议或类型,在实例化时接受像Int,Double,String,NSDate等类型的类型,比如CustomStringConvertible?如何模仿CustomStringConvertible

第一个块符合CustomerStringConvertible并且正常工作。

第二块(“我的路......”)不(我理解,但我不知道如何解决它)

我应该如何实现呢?我在网上游乐场创造了这个(swiftStub,见http://swiftstub.com/222917135/?v=beta

print("The CustomStringConvertible way") 
    var itemToPrint : CustomStringConvertible 
    itemToPrint = "Bart" 
    print(itemToPrint) 
    itemToPrint = 109 
    print(itemToPrint) 
    itemToPrint = NSDate() 
    print(itemToPrint) 


    print("My way..doesnt work...what must I do to imitate CustomStringConvertible???") 
    protocol AProtocol { 
     var value: Double { get } 
    } 

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

    var myVarProtocol: AProtocol 
    myVarProtocol=127 
    print(myVarProtocol) 
    myVarProtocol="Bart..THIS IS NOT ALLOWED" 
    print(myVarProtocol) 
    myVarProtocol=NSDate() 
    print(myVarProtocol) 
+0

你没有使'String'符合'AProtocol' ... – ABakerSmith

+0

好的,但我应该如何实现这一点?我还需要存储字符串 – Bart

回答

0

这样的事情已经存在于语言 - AnyObjects。但是,使用非特定类型时,只要您想调用特定类型的方法,就会强制您将其转换为特定类型。

+0

并不是我需要使用它,我希望能够理解和实现这一点。 – Bart