이번 문제는 매우 간단한 String -> Int 변경 관련 문제입니다.
심지어 조건에 적혀있는대로면 String은 무조건 들어오고, 그 값 또한 무조건 Int라고 하네요.
func stringToNumber(_ string:String) -> Int {
return Int(string)!
}
이번 문제는 해설도 필요없지만, 변환하는 방법들을 적어보기 위해서 갖고왔습니다.
String에서 Int로 변환할 때는 해당 String(string으로 명명) 값이 정확히 정수로 들어온다는 조건 하에 다음과 같이 사용할 수 있습니다.
let returnValue = Int(string) // optional Int value
Int의 생성자 중 String을 바로 받는게 있어서 가능한데요, 문서에서 관련 내용을 찾아보겠습니다.
https://developer.apple.com/documentation/swift/int#Converting-Strings
내용에 따르면 string으로 받은 값을 optional Int로 반환해주는 생성자이네요.
생각보다 이런 Convert관련된 함수는 잘 되어있는 편입니다.
이런 optional return value들은 optional이 아닌 변수에 할당할 수 없습니다. 별다른 조치를 취하지 않으면 다음과 같은 에러가 발생하겠죠.
1. 기본값을 ?? 통해서 지정하거나
let returnValue = Int(string) ?? 0 // not optional Int value
2. !를 통해서 force-unwrap을 해주거나.
let returnValue = Int(string)! // optional Int value
당연히 2번 값의 경우는 강제종료가 일어날 수 있으니 주의해서 사용하셔야 합니다.
하지만 확실하게 변환에 문제가 없다 할 때는 사용할 수 있겠죠.
또 다른 방법은 다음의 방식이 있습니다.
let returnIntValue = (string as NSString).integerValue
아마 Objective-C 또는 초기 Swift를 사용하던 분들이라면 익숙할 NSString에 선언 되어있는 integerValue를 통해서 Int 값을 불러오는 것입니다. 이경우는 요즘은 사용하는 경우가 없을 것 같지만, 만에 하나 NSString을 다루는 경우에는 이런 방법도 있다 정도로 알고 계시면 될 것 같네요.
'Codewars(알고리즘) > 8Kyu' 카테고리의 다른 글
[Codewars] [8Kyu] Switch it Up! (0) | 2021.03.04 |
---|---|
[Codewars] [8Kyu] Function 3 - multiplying two numbers (0) | 2021.03.04 |
[Codewars] [8kyu] Dollars and Cents (0) | 2020.10.31 |
[Codewars] [8kyu] To square(root) or not to square(root) (0) | 2020.10.31 |