본문 바로가기

Swift 문법

(8)
[Swift] 컬렉션 자료형에 대해 알아보자 - 2 (Dictionary) 지난 포스팅에서는 컬렉션 자료형 중 Array에 대해 알아보았습니다. 이번 포스팅에서는 Dictionary에 대해 알아보겠습니다. Dictionary란? Dictionary는 요소가 키-값 쌍인 컬렉션이고, 구조체로 되어있네요! 또한 Dictionary는 일종의 해시 테이블이고, 순서가 보장 되어 있지 않습니다. 특이하게 요소중 key가 Hashable을 채택하고 있어야하는데, Swift에서 제공하는 기본 자료형들은 대부분 Hashable 프로토콜을 준수하고 있습니다. 여기서 Hashable이 머냐.. 하면 Hashable은 Equatable 프로토콜을 준수하고 있고.. 이 Equatable 프로토콜은 == 과 같은 연산자를 사용할 때, 사용되는 프로토콜 인데, 어떤 프로퍼티를 가지고 값이 같은지 아닌지..
[Swift] 컬렉션 자료형에 대해 알아보자 - 1 (Array) 컬렉션 타입이란, 데이터를 묶어서 추가, 삭제 등 관리할 수 있는 타입입니다. Array, Dictionary, Set 등을 컬렉션 타입이라고 부릅니다. 이번 포스팅에서는 Array에 대해 알아보도록 하겠습니다. Array Array는 순서가 보장된 컬렉션 타입이고, 구조체로 되어있습니다. 순서가 보장되었기 때문에 index를 통해서 Array의 Element에도 접근이 가능합니다. 이와 같은 Array를 어떻게 만들까요? Array 생성 요소가 있는 Array 생성 둘 다 같은 표현이지만, 두 번째 방법이 축약 표현 입니다. 저는 축약된 방식을 주로 사용하고 있고, 대부분 축약 방식을 사용하는 것 같아요. 만약 0이 100개 있는 Array를 생성하고 싶을 땐 어떡할까요? 이것도 간단하게 생성할 수 있..
[Swift] 튜플 (tuple) 에 대해 알아보자! 튜플(tuple)은 자료형의 묶음 이라고 표현할 수 있어요. 지금까지 기본 데이터 타입에 대해 알아보았죠? (Int, Double, String, Any 등등..) 이것들을 괄호를 사용해서 묶을 수 있어요. 같은 자료형이 아니더라도, 묶을 수 있어요. book이라는 프로퍼티를 선언하고, 이름, 가격, 베스트셀러인지 아닌지의 정보를 갖고 있는 튜플을 선언해보겠습니다. 괄호를 사용해서 묶어주면 끝.. 입니다. 인덱스 (0, 1 ..) 를 통해서 값을 빼올 수도 있고, 수정도 가능합니다. 인덱스로 접근하게 되면, 각 요소가 어떠한 의미가 있는지 알기 어렵네요.. 요소에 이름을 붙여서 접근하는 방법도 있습니다. 튜플 타입이 길어지기 때문에 불편한 점이 있는데 typealias을 사용해서 축약하여 작성할 수 있어..
[Swift] 기본 자료형에 대해 알아보자! - 4 (Float, Double) 이번 포스팅에서는 부동소수 타입인 Float과 Double에 대해 알아보도록 하죠! 여기서 부동소수 타입이란, 실수로 이해하시면 될 것 같습니다. 이 부동소수 타입은 정수 타입보다 더 넓은 범위의 수를 표현할 수 있어요. Double은 64비트의 부동소수, Float은 32비트의 부동소수 표현을 합니다. 비트로 설명하니깐 몇자리인지 와닫지 않을 수 있는데요, 64비트는 최소 15자리, 32비트는 6자리의 숫자까지만 표현이 가능합니다. 저는 대부분 실수 타입을 선언할 때, Float보다는 Double을 훨씬 많이 사용하는 것 같아요. Float를 사용하면, 정확도가 Double 타입보다는 낮은 것 같습니다. Double 자료형과 같은 값을 넣어줬는데도 다른 결과가 나오는 것을 확인하실 수 있어요. (알아서..
[Swift] 기본 자료형에 대해 알아보자! - 3 (Any, AnyObject, nil) 지난 포스팅에서는 Bool, Character, String 자료형에 대해 알아보았는데요, 이번 포스팅에서는 Any, AnyObject, nil에 대해서 간단하게 알아보도록 하죠! Any Any는 따로 공식문서에 나와있지 않네요.. (제가 못찾는 것일까요?) Any는 말 그대로 Swift의 모든 데이터 타입을 사용할 수 있다는 뜻이에요. 아래 코드를 보면 어느 자료형이 들어가도 할당되는 것을 볼 수 있어요. 물론 아직 포스팅하진 않았지만 [Any] 배열에는 다른 데이터 타입이 들어가도 상관 없습니다. AnyObject AnyObject는 프로토콜이고, 모든 클래스가 AnyObject 프로토콜을 준수하고 있다고 하네요! 아직 프로토콜과 클래스에 대한 이해가 부족할 수 있으실 거에요! 일단 지금은, Any는..
[Swift] 기본 자료형에 대해 알아보자! - 2 (Bool, Character, String) 지난 포스팅에서 Int, UInt 자료형에 대해 알아보았습니다! 이번 포스팅에서 Bool, Character, String에 대해 알아보도록 하죠! Bool Struct로 되어있음 true / false 값을 갖는 유형 Bool 자료형은 아주 간단하죠? 예제 코드를 보며 조금 더 알아봅시다. 다음은 Character 자료형에 대해 알아보겠습니다. Character 단 하나의 "문자"를 의미함 Struct로 되어있음 이모티콘 사용 가능 하나 이상의 유니코드 스칼라 값으로 구성됨 Character 자료형도 예제 코드를 보며 살펴보도록 합시다. 위 코드를 살펴보던 중 이상한 점이 하나 있을 거에요. \u{1f436} 이라는 이상한 문자가 하나가 껴있는데 이는 유니코드를 넣어줄 때 \u{} 포멧을 사용하고, U..
[Swift] 기본 자료형에 대해 알아보자! - 1 (Int, UInt) 오늘은 Swift에서 제공하는 자료형에 대해 알아봅시다. Int Struct로 되어있음 부호가 있는 정수 값 타입 32bit CPU 라면 Int는 Int32와 크기가 같음 64bit CPU 라면 Int는 Int64와 크기가 같음 Int는 알겠는데.. Int 뒤에 숫자가 붙는거를 처음 보신 분들도 계실꺼에요. Int8, Int16, Int32, Int64... 예상이 가시나요? 뒤에 붙은 숫자는 bit를 의미합니다. 즉, Int8 자료형의 크기는 8비트 입니다. Int8은 8비트이므로, -128 ~ 127의 범위를 갖을 수 있습니다. 한 번 확인해 볼까요? Int8, Int16, Int32, Int64, Int 전부 확인해보도록 하죠! UInt Struct로 되어있음 부호가 없는 정수 값 타입 32bit ..
[Swift] let, var의 차이 데이터 저장 Swift에서 let, var 을 사용하여 메모리에 데이터를 저장할 수 있음 [let or var] [변수명]: [타입] = [값] 과 같은 형태로 사용됨 타입은 생략 가능! (타입을 생략하게 되면 컴파일러가 변숫값의 타입을 추론하여 타입을 지정해요!) 먼저 let에 대해 알아보도록 하죠! let Swift 에서는 let 키워드를 사용해 상수를 생성할 수 있습니다. 상수란, 변하지 않는 값 입니다. 즉, 상수로 선언하게 되면 이후에 값을 변경할 수 없습니다. 따라서 상수로 선언되었다는 것을 보면 이후에 값의 변화가 없다는 것을 직관적으로 알 수 있겠죠? 또한, 의미가 명확하지 않은 매직넘버를 상수로 선언하여 사용할 수 있습니다. 상수의 경우 대문자와 밑줄을 사용하여 네이밍을 짓는 컨벤션도 있..