6
"이 기능을 사용하지 않아야합니까?" 문제. 그러나 나는 이것을 더 잘 표현할 수있는 방법을 찾아 낼 수 없다.Swift의 패턴 일치에서 예기치 않은 결과가 발생했습니다.
enum MyEnum {
case A, B, C
}
let tuple = (MyEnum.C, MyEnum.A)
var x: String
switch tuple {
case (.A, _):
x = "(A, something)"
case (_, .A):
x = "(something, A)"
case (_, .B):
x = "(something, B)"
case (.C, .C):
x = "(C, C)"
default:
x = "default"
}
x // -> "default"
x
는 기본 분기가 찍은 의미 "default"
로 평가합니다.
그러나 "(something, A)"
과 두 번째 case 문이 일치해야합니다. 내가 이해 한 것에서 (_, .A)
은 첫 번째 튜플 요소의 어떤 것과도 일치해야하고 두 번째 요소는 .A
이어야합니다.
케이스를 위로 이동하면 예상대로 일치합니다. 다른 튜플은 내가 기대하는 곳과도 일치합니다.
무엇이 누락 되었습니까? 왜 두 번째 사건과 일치하지 않습니까?
흥미롭게도 재현성이 있습니다 ... 다른 사례 문장 ('default' 이외)을 주석 처리 할 때도 예상대로 작동합니다. 버그 리포트가 필요한 것처럼 보입니다! – Jack
테스트 케이스의 다른 순서가 올바른 결과를 만들어내는 것처럼 보입니다. 놀이터 일인지 확인하려고합니다. – Jack
그렇지 않습니다. 나는 일반 애플 리케이션을 작성하는 동안 그것을 발견했다. :) 여기 누군가가 실수를 지적하지 않으면 나는 분명히 버그 보고서를 제출할 것입니다. – nschum