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

问题描述:

给定以下测试代码,为什么字符串插值\(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" 
+0

你想打印什么答案?然后我们可以用代码来帮助你。 – 2014-09-25 22:47:52

+3

这是已知的操场问题。相同的代码在Swift项目中工作正常。目前的解决方法是使用** println(“t1 = \(t1.description)”)**。 – vladof81 2014-09-26 01:27:35

注意,被打印为(Enum Value)枚举是在夫特版本1.0(SWIFT-600.0.51.3)已知错误。它将在未来的版本中得到修复。

+0

你有错误报告的链接吗?似乎在v1.1也是不固定的。 – 2015-02-08 17:29:33

+0

至今仍未修复。这种简单的事情能持续多久? – 2015-02-15 11:26:36

+0

枚举的字符串插值现在从Xcode 6.3版本6D570开始固定。 – 2015-04-17 22:48:21