Swifr에서 입력은 readLine()을 통해 할 수 있다. readLine()은 입력을 모두 Optional String형으로 처리하기 때문에 또 다른 처리가 필요하다. 또한 Swift에서 readLine은 EOF가 들어오기 전에 입력을 return 하게 되는데, EOF란 End Of File의 뜻으로 엔터가 입력되는 것을 EOF처리가 됐다라고 한다. 즉, 엔터가 한번 입력되면 readLine()한개가 끝나는 것이다.
readLine은 모든 값을 optional string 형태로 return한다. 따라서 추가적인 처리를 해줘야, 정수 입력이 가능하다. 옵셔널 바인딩 기능과 Int로 형변환이 필요하다.
let input = readLine()
print(type(of:input))
// prints "Optional<String>"
let inputOut = input!
print(type(of:inputOut))
//prints "String"
let intvar = Int(InputOut)
print(type(of:intvar))
//prints "Optional<Int>"
let result = intvar!
print(type(of:result))
//prints "Int"
언래핑과 Int형 변환
let line = Int(readLine()!)!
문자열 하나를 입력 받디 위해서는 readLine에서 옵셔널을 한번만 강제로 벗겨주면 된다.
let text = readLine()!
import Foundation
let input = readLine()! // h e l l o 라고 입력
print(type(of: input))
print(input)
// prints "String"
// prints "h e l l o"
let result = input.components(separatedBy: " ")
print(type(of: result))
print(result)
// prints "Array<String>"
// prints ["h", "e", "l", "l", "o"]
foundation 프레임웤에 포함되어 있는 components 메서드를 활용하여 띄었기로 구분해주었다. 이렇게 쓰게 되면 띄어쓰기를 기준으로 입력받능 문자열이 배열로 바로 return된다.