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

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