可打印的字符串插值不起作用

时间:2014-09-25 21:44:24

标签: swift enumeration string-interpolation

鉴于以下测试代码,为什么字符串插值\(t1)和\(t2)不起作用?重命名description会导致编译器失败并输入" Type' Test'不符合协议' Printable'"鉴于每次测试的第二次印刷,description显然是有效的。

enum Test: Printable {
    case A
    case B(Int)

    var description: String {
        switch self {
        case .A:
            return ".A"
        case let .B(value):
            return ".B: value = \(value)"
        }
    }
}

let t1 = Test.A
let t2 = Test.B(-100)

println("t1 = \(t1)")       // prints "t1 = (Enum Value)"
println(t1.description)     // prints ".A"

println("t2 = \(t2)")       // prints "t2 = (Enum Value)"
println(t2.description)     // prints ".B: value = -100"

1 个答案:

答案 0 :(得分:5)

请注意,打印为(Enum Value)的枚举是Swift 1.0版(swift-600.0.51.3)中的已知错误。它将在未来版本中修复。