TIL 20일 차 - Swift로 야구 게임 만들기 피드백 최종 리팩토링

드디어 피드백이 나왔다... 대학에서도 이렇게 하루 종일 집중해서 열심히 과제한 적이 없는 거 같은데...ㅎㅎ
ai 없이 끙끙거리면서 맨몸으로 부딪히니 더 기억에 남고 뿌듯함도 느껴지는 것 같다.
1. start() 메서드 내에 playGame() 메서드가 중첩되어 있다!
이 부분 읽자마자 냅다 비명부터 지름

형이 왜 거기서 나와..?? 싶어서 바로 후다닥 꺼내주었다......
튜터님은 이걸 어떻게 발견하신 거지.. 나는 몇 날며칠을 봐도 못 찾았는데..
2. splitNum 메서드를 Character의 wholeNumberValue 속성을 활용해 숫자로 변환하기
내가 제출했던 기존의 코드는 입력받은 Int값을 String으로 변환한 뒤 Character로 변환된 값을 다시 String으로 바꾸고 그걸 다시 Int로 형변환을 해주는 그런 복잡한 과정을 거쳐서 배열을 return해주는 함수였다.
// MARK: - 입력한 세자리 수를 숫자 각 한개씩으로 배열로 쪼개는 내부 로직 함수
// 기존 코드 (수정 전)
private func splitNum(_ num: Int) -> [Int] {
let result = String(num).compactMap{ Int(String($0))}
return result
}
이걸 이제 Chracter의 wholeNumberValue 속성을 써서 함수를 만들어보자
그럼 대체 wholeNumberValue는 뭐냐!
Character가 숫자라면? 그 숫자 값을 바로 Int?로 꺼내주는 속성이다.
밑의 예를 보고 이해해 보자
let ch: Character = "1886"
print(ch.wholeNumberValue) // Optional(1886)
// 숫자가 아니면 nil 출력
최종 수정 코드
// wholeNumberValue를 이용해 풀이한 최종 코드 (수정 후)
private func splitNum(_ num: Int) -> [Int] {
return String(num).compactMap { $0.wholeNumberValue }
}
3. 함수 네이밍 수정
// MARK: - 입력값과 정답을 비교해 힌트 계산하는 함수 (수정 전)
func compareInpAns(_ number: Int, _ ansArray: [Int]) -> GameResult {...}
내가 작성했던 함수의 이름 compareInpAns 이거 지어놓고 나름 잘 지은줄 착각했는데 전혀 아니었다... ㅋㅠㅋ
내가 쓴 함수를 호출할 때의 모습을 봐보자
compareInpAns(123, [1,2,3])
// 일단 Inp,Ans이런건 이름을 지은 나만 알아먹음
// 파라미터가 둘다 _ 이거라서 읽을때 맥락이 없다
일단 함수의 이름은 compare로 바꾸고 _로 생략되어 있던 파라미터명을 input과 with answer로 변경해 주자
func compare(input: Int, with answer: [Int]) -> GameResult {...}
그러면 이 함수는 이렇게 호출하게 변경된다.
compare(input: 123, with: [1,2,3])딱 봐도 input을 answer와 비교하는 함수이구나..!라고 캐치가 가능하게 변한다.
이렇게 함수 호출을 할 때 영어 문장처럼 읽히게 하는 것이 바로 Swift의 추구미✨라고 한다.
이제 야구 게임 리팩토링 진짜 끝!

'iOS > Swift ' 카테고리의 다른 글
| [Swift 알고리즘] 2022 KAKAO BLIND RECRUITMENT 신고 결과 받기 문제 풀이 (0) | 2026.01.29 |
|---|---|
| [Swift 알고리즘] 2024 kakao winter internship 가장 많이 받은 선물 알고리즘 풀이 (0) | 2026.01.26 |
| [Swift 알고리즘] 의상 갈아입기 알고리즘 문제 풀이 (1) | 2026.01.21 |
| [iOS-Swift] 고차함수 Map 활용하기 (0) | 2026.01.19 |
| [iOS-Swift] 심화 문법 문제 - 숫자 야구 게임 (0) | 2026.01.18 |