如何模仿CustomStringConvertible

时间:2015-09-01 14:00:58

标签: swift swift2

如何制作协议或类型,在实例化时,接受像Int,Double,String,NSDate等类型的类型,如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 )

1 个答案:

答案 0 :(得分:0)

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