[Swift] 스위프트의 문자열(String)에서 index로 문자에 직접 접근할 수 없는 이유
Swift 2022. 2. 22. 01:45

let str: String = "hello, world~!" print(str[0]) // 결과는? 위 코드를 실행하면 어떤 결과가 출력될까? "h"? 🙅‍♀️ 정답은 바로 컴파일 에러다. 아래와 같은 문구가 나타나면서 컴파일 에러가 발생한다. 'subscript(_:)' is unavailable: cannot subscript String with an Int, use a String.Index instead. → Int를 사용하여 문자열의 특정 위치에 접근할 수 없다. Int 대신 String.Index를 사용해라. 왜 스위프트에서는 여타 다른 많은 언어와 달리, Int를 사용하여 문자열의 위치에 직접 접근할 수 없을까? String도 결국 Character 배열로 이루어져있으면서? 이 문제를 이..

[Swift] Optional과 Optional Binding
Swift 2021. 10. 28. 17:30

Optional 변수에 값이 있을 수도 있고 없을 수도 있음을 암시 '데이터가 아예 존재하지 않음'을 나타내는 nil(다른 언어에서는 null)의 가능성을 명시적으로 표현한다. nil의 가능성에 대해 문서화하여 전달하지 않아도 코드만 보고 알아챌 수 있기 때문에 효율적이다. 즉, 전달받은 값이 옵셔널 값이 아니라면 nil이 들어갈 수 없으므로 nil체크를 하지 않아도 안심하고 사용할 수 있다. (흔히 java에서 발생하는 NullPointerException이 발생하지 않는다.) Swift에서 강조하는 안전한 코딩이 가능하다! 옵셔널은 변수의 타입 뒤에 '?' 또는 '!'가 붙어 쉽게 파악할 수 있다. - '?'가 붙은 (일반) 옵셔널 var num: Int? // nil var num2: Int = n..

[Swift] 옵셔널 바인딩(Optional Binding)과 암시적 추출 옵셔널(Implicitly Unwrapped Optionals)
Swift 2021. 6. 9. 20:13

옵셔널(Optional) 1. 값이 존재할 수도 있고 아예 존재하지 않을 수도 있다. 2. 값이 존재한다면 옵셔널을 언래핑(unwrap)하여 그 값에 접근할 수 있다. Int의 0이나 String의 ""는 값이 존재하지 않음을 나타내는 것이 아니라 각각 0과 ""이라는 값을 가지고 있음을 의미한다. 값이 아예 존재하지 않을 때는 'nil'을 사용해 표현할 수 있다. 옵셔널은 타입 뒤에 물음표(?)를 붙여줌으로써 해당 객체가 옵셔널 객체임을 선언해줄 수 있다. var optionalVal: String? // optionalVal의 타입: Optional optionalVal = "hello, world!" // Optional("hello, world!") optionalVal = nil // nil 옵..