클래스나 구조체, 열거형에는 컬렉션,리스트, 시퀀스 등 타입의 요소에 접근하는 단축 문법인 서브스크립트를 정의할 수 있다. 서브스크립트는 별도의 setter 나 getter 를 구현하지 않아도 인덱스를 통해 값을 설정하거나 가져올 수 있다. 예를 들어 Dictionary 나 Array 같은 자료형의 경우 arr[index] 나 dictionary[key] 의 표현을 통해서 값을 가져오거나 값을 할당할 수 있다. 이런 것을 서브스크립트라 하는데, 개발자가 한 타입에 여러 개의 서브스크립트를 정의할 수 있으며, 다른 타입을 인덱스로 갖는 여러 개의 서브스크립트를 중복 정의할 수도 있다. 사용자 정의 클래스, 구조체, 열거형에 서브스크립트를 정의할 수 있으며, 서브스크립트를 통해 타입의 데이터를 가져올 수 있..
스위프트나 코틀린 같은 함수형 패러다임 언어는 컬렉션을 가공하는 수많은 유용한 함수를 제공해준다. 예를 들어 배열에서 특정 조건을 만족하는 요소만 담아서 새로운 배열을 만들어준다던가, 배열의 모든 요소에 특정 작업을 수행할 수 있다. 스위프트에서 유용한 고차함수로 Map, Filter, Reduce 가 있는데, 이것을 활용해 데이터 연산을 쉽게 해보자! Map 맵은 자신을 호출할 때 매개변수로 전달된 함수를 실행하여 그 결과를 다시 반환해주는 함수이다 Swift 에서 map 함수는 Sequence, Collection 프로토콜을 따르는 타입과 옵셔널은 모두 맵을 사용할 수 있다. map 을 사용하면 컨테이너가 담고 있던 각각의 값을 매개변수로 전달한 함수를 실행시켜 새로운 값으로 변환하고 다시 컨테이너에..

Swift 에서 옵셔널은 nil 값에 대해 안전한 처리를 가능하게 한다. 옵셔널로 선언된 변수나 상수는 항상 옵셔널 바인딩이나 nil 체크를 통해 값을 꺼내야 하며, 컴파일러가 항상 이것을 체크한다. Swift 옵셔널 옵셔널 (Optional) 이란 말 그대로 선택적인, 즉 값이 있을 수도 없을 수도 있다는 것을 나타낸다. 즉 프로그래밍 언어에서는 상수나 변수가 값을 가질 수도, 없을 수도(null) 있다는 것을 의미하고, N forstudy.tistory.com 옵셔널을 사용하면 오류 방지엔 뛰어나겠지만, 만약 옵셔널 안의 옵셔널 안의 옵셔널 안의 옵셔널 안의 상수를 꺼낸다고 할 때 무슨 마트료시카 인형을 여는 것 마냥 매우 많은 코드를 생성해야 하고 이는 개발자 입장에서 매우 귀찮은 일이다. if l..
스위프트의 클로저 는 함수형 프로그래밍 패러다임을 이해하기 위해 꼭 알고 가야 하는 요소다. 클로저는 다른 프로그래밍 언어의 람다와 유사하고, 일정 기능을 하는 코드를 하나의 블록으로 모아놓은 것을 의미한다. 클로저는 함수의 한 형태이며, 사실 함수는 이름이 있는 클로저라고 할 수 있다. 클로저는 변수나 상수가 선언된 위치에서 참조를 획득할 수 있다. 이를 변수나 상수의 클로징(잠금) 이라 하며, 클로저는 여기서 착안된 이름이다. 클로저는 다음과 같이 세 가지 형태가 있다. 이름이 있으면서 어떤 값도 획득하지 않는 전역함수 이름이 있으면서 다른 함수 내부의 값을 획득할 수 있는 중첩된 함수 이름이 없고 주변 문맥에 따라 값을 획득할 수 있는 축약 문법으로 작성 기본 클로저 스위프트의 표준 라이브러리에는 ..

옵셔널 (Optional) 이란 말 그대로 선택적인, 즉 값이 있을 수도 없을 수도 있다는 것을 나타낸다. 즉 프로그래밍 언어에서는 상수나 변수가 값을 가질 수도, 없을 수도(null) 있다는 것을 의미하고, Nullable 이라고도 표현할 수 있다. Swift의 모든 타입은 기본적으로 nil을 가질 수 없다. 그렇다면 어떻게 nil을 가지도록 표현할 수 있을까? 옵셔널 사용 기본적으로 Swift 에서 다음과 같이 변수나 상수를 선언하면, 해당 변수나 상수는 nil 을 가질 수 없다 var number : Int = nil //
열거형은 연관된 항목들을 묶어서 표현할 수 있는 타입으로, 프로그래머가 정의해준 값 외에는 추가나 수정이 불가능하다. 그렇기 때문에 딱 정해진 값만 열거형 값에 속할 수 있다. 열거형은 다음과 같은 상황에 유용하게 사용할 수 있다. 제한된 선택지를 주고 싶을 때 정해진 값 외에는 입력받고 싶지 않을 때 예상된 입력 값이 한정되 있을 때 즉 연관된 값들을 높은 가독성으로 나열하는데 특화되있으며, 실생활에서 이미 열거형으로 사용할 수 있는 개념들이 많다. 예를 들어 요일은 [월요일,화요일,수요일,목요일,금요일,토요일,일요일] 으로만 이루어져 있기 때문에, 이것을 열거형으로 만들면 해당 API 를 사용하는 프로그래머는 무조건 정의된 요일만 사용할 수 있다. 기본 열거형 스위프트의 기본 열거형은 enum 이라는..
프로그램이 실행되다 보면, 무조건 에러가 발생하게 된다. 예를 들어 카카오톡 같은 메신저 앱의 경우, 인터넷 연결이 계속 유지되어야 정상적으로 상대방과 채팅을 할 수 있다. 하지만 사용자가 와이파이를 끈다던가, 비행기 모드를 키는 등의 행동으로 인터넷 연결이 끊어질 경우, 네트워크 통신 시 에러가 발생하게 되며 프로그램은 그런 에러를 정상적으로 처리할 수 있어야 한다. 만약 발생 가능한 모든 에러를 처리하지 못한다면, 런타임 에러로 인해 작동 중인 프로그램이 강제로 종료될 것이다. Swift 의 에러 핸들링 Swift 는 Java 나 Kotlin 같은 언어와 거의 유사하게 에러를 처리한다. 기능 동작 중 에러가 발생할 경우 에러를 던질 수 있고 (throws), 던진 에러를 감지해서(catch) 처리할 ..
Swift 의 딕셔너리는 자바나 일반 자료구조의 HashTable 과 동일한 개념이다. key 와 value 로 이루어져 있고, 데이터엔 순서가 없다. Hash Table 에 대해서도 포스팅을 해놓은 자료가 있으니 Hash Table 이 뭔지 잘 모르면 보고 오면 좋겠다. Hash 자료구조 - java Hash 자료구조란? key와 Value 가 쌍을 이루는 자료구조 key 탐색의 시간복잡도가 O(1) 이다. key 삭제의 시간복잡도가 O(1) 이다. key와 Value 삽입의 시간복잡도가 O(1) 이다. Hash 자료구조의 경우 검색과 forstudy.tistory.com Dictionary 란? Key - Value 쌍으로 이루어진 Collection 을 의미한다. Dictionary 의 시간 복잡도..
Comment