다음 테스트 코드가 주어지면 문자열 보간 \ (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"
대답은 무엇입니까? 그러면 코드를 통해 도움을받을 수 있습니다. –
이것은 놀이터의 알려진 문제입니다. 동일한 코드가 Swift 프로젝트에서 잘 작동합니다. 당장은 ** println ("t1 = \ (t1.description)") **을 사용하십시오. – vladof81