2014-09-25 9 views
4

다음 테스트 코드가 주어지면 문자열 보간 \ (t1) 및 \ (t2)이 작동하지 않는 이유는 무엇입니까? description의 이름을 바꾸면 "Type 'Test'프로토콜이 'Printable'프로토콜을 따르지 않고 컴파일러가 실패하고 description이 분명히 각 테스트의 두 번째 println에서 작동합니다. 이 열거 (Enum Value)로 인쇄되는 것을인쇄 가능한 문자열 보간이 작동하지 않습니다.

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

대답은 무엇입니까? 그러면 코드를 통해 도움을받을 수 있습니다. –

+3

이것은 놀이터의 알려진 문제입니다. 동일한 코드가 Swift 프로젝트에서 잘 작동합니다. 당장은 ** println ("t1 = \ (t1.description)") **을 사용하십시오. – vladof81

답변

5

참고 스위프트 버전 1.0 (SWIFT-600.0.51.3)에서 이미 알려진 문제이다. 향후 릴리스에서 수정 될 예정입니다.

+0

버그 보고서에 대한 링크가 있습니까? v1.1에서도 수정되지 않은 것 같습니다. –

+0

오늘까지는 아직 해결되지 않았습니다. 그런 간단한 일이 얼마나 오래 걸릴 수 있습니까? –

+0

열거 형의 문자열 보간은 이제 Xcode 6.3 버전 6D570에서 고정됩니다. –