可打印字符串插值不起作用
给定以下测试代码,为什么字符串插值\(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"
注意,被打印为(Enum Value)
枚举是在夫特版本1.0(SWIFT-600.0.51.3)已知错误。它将在未来的版本中得到修复。
你有错误报告的链接吗?似乎在v1.1也是不固定的。 – 2015-02-08 17:29:33
至今仍未修复。这种简单的事情能持续多久? – 2015-02-15 11:26:36
枚举的字符串插值现在从Xcode 6.3版本6D570开始固定。 – 2015-04-17 22:48:21
你想打印什么答案?然后我们可以用代码来帮助你。 – 2014-09-25 22:47:52
这是已知的操场问题。相同的代码在Swift项目中工作正常。目前的解决方法是使用** println(“t1 = \(t1.description)”)**。 – vladof81 2014-09-26 01:27:35