티스토리 뷰
에러 해결 일지/문법 에러 해결
switch Expected member name or constructor call after type name 에러
JeroIOS 2022. 10. 22. 17:43얼마 전 계산기 앱을 만들면서 우선 순위가 있는 계산을 해주기 위해
열거형을 사용하여 더하기, 뺄셈, 곱셈, 나누기를 지정해줬다.
enum CalculationOperator: String {
case plus = "+"
case minus = "-"
case multiply = "x"
case divide = "÷"
}
그러고 사용자가 입력한 연산자를 enum을 사용해서 저장하려고
switch .. case 문에서 해당 operator을 쓰는데 에러가 났다..ㅎㅎ
switch self { } 이런 식으로 사용했는데
맨 처음에는 enum 구문안에 없어서 self를 못 찾나보다 -> enum 안에 넣어봐야지 하면서
끼워맞추기식 에러 해결을 시도했는데... 계속 찾을 수 없다는 내용의 에러가 났다.
switch를 잘 알고 있다고 생각했는데.. 당황스러웠다.
그래서 다시 switch에 대한 개념을 정리해보고자 한다.
switch 표현식 {
case 일치하는 값1:
코드문
case 일치하는 값2:
코드문
case 일치하는 값3
코드문
default:
}
1. switch 옆에는 값을 나타내거나 값을 반환하는 표현식이다.
2. 이 값은 switch 구문이 동작하게 하는 값이다.
3. 그 값과 일치할 수 있는 값을 case 구문으로 제공된다.
4. 표현식과 일치하는 case 구문이 없을 경우에 어떻게 해야하는 지 정의하는 부분이다.
이걸 확인하니 문제가 바로 해결되었다.
값을 나타내거나 반환하는 표현식을 써야하는데
내가 그냥 self로 하니 일치하는 값을 찾을 수가 없었던 건 당연한 것이다.
그래서 버튼으로 입력받은 사용자의 숫자를
sender.currentTitle을 oper라는 상수에 저장해주었고,
switch oper {}
위 처럼 oper를 표현식에 넣어줬다.
다음에는 당연하다고 생각하는 것도 오류가 생기면
다시 개념을 확실히 하고 사용해야겠다.
댓글