입력 받는 함수 만들기 feat. readLine()

hoBahk·2021년 10월 15일
0
post-thumbnail

readLine()

readLine() 함수를 사용하면 사용자의 입력을 받을 수 있습니다..

하지만 아래와 같이 Optional("1") 로 출력이 됩니다.

이유는 readLine()으로 입력을 받게 되면 옵셔널String 으로 반환이 되기 때문입니다.

그래서 옵셔널 바인딩을 하여 옵셔널 언래핑을 해야합니다.(옵셔널 바인딩은 나중에..)
옵셔널 바인딩은 아래와 같이 합니다.

옵셔널을 언래핑하면 String타입이 된다.

입력받는 함수 만들기

readLine()함수를 이용하여 입력을 받는 함수를 만들어 봅시다.
저는 처음에는 옵셔널이 있으면 당연히 언래핑을 해야겠다는 생각이 들었습니다.
그래서 아래와 같이 언래핑을 하고 String타입을 반환하도록 했습니다.
그랬더니 아래와 같이 receiveInput() else문에서 return ""이 계속 거슬리는...
리턴 타입이 String이다 보니 ""인 빈 문자열을 반환해야 했습니다.

func receiveInput() -> String {
    guard let userInput = readLine() else {
        return ""
    }
    
    return userInput
}

func verifyInput() {
    let userInput = receiveInput()
    
    if userInput == "0" {
        print("게임종료")
        return
    }
    
    print(userInput)
}

나는 어느순간 생각이 들었습니다. "꼭 언래핑을 하고 리턴할 필요는 없잖아..?"
그래서 옵셔널 형태로 리턴하는 방법으로 작성해 보았는데요. receiveInput()함수의 리턴 타입을 옵셔널String으로 하고나니 빈 문자열을 반환하지 않아도 됐고 함수기능 그대로 함수명으로 만들어 줄 수 있었습니다.
조금 더 깔끔한 코드가 되지 않았나 싶습니다!

func receiveInput() -> String? {
    let userInput = readLine()
    
    return userInput
}

func verifyInput() {
    guard let userInput = receiveInput(), userInput != "0" else{
        print("게임종료")
        return
    }
    
    print(userInput)
}
profile
호박에 줄 그어서 수박 되는 성장 드라마

0개의 댓글