반응형

Programming/Swift 23

[Swift] 문법 다시보기 - 서브스크립트 (subscript)

야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다. 서브스크립트 (subscript) 클래스, 구조체, 열거형에서 컬렉션, 리스트, 시퀀스 등 타입의 요소에 접근하는 단축 문법 별도의 설정자 또는 접근자 등의 메서드를 구현하지 않아도 인덱스를 통해 값을 설정하거나 가져올 수 있음 여러개의 서브스크립트를 구현할 수 있고 외부에서 사용할 때는 전달한 값의 타입을 유추하여 적절한 서브스크립트를 선택하여 실행 (→ 서브스크립트 중복 정의) 타입에 따라 여러 매개변수를 가질 수 있음, 입출력 매개변수는 가질 수 없음 문법 인스턴스 이름 뒤에 대괄호로 감싼 값을 써서 인스턴스 내부의 특정 값에 접근 subscript 키워드를 사용하여 정의 subscript(index: Int) -> Int { get..

Programming/Swift 2021.10.15

[Swift] 문법 다시보기 - 맵, 필터, 리듀스 (map, filter, reduce)

야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다. 맵, 필터, 리듀스 맵 맵을 사용하면 컨테이너가 담고 있던 각각의 값을 매개변수를 통해 받은 함수에 적용한 후 다시 컨테이너에 포장하여 반환한다 맵은 기존 데이터를 변형(transform)하는 데 많이 사용한다 필터 컨테이너 내부의 값을 걸러서 추출, 새로운 컨테이너에 값을 담아 반환한다, 기존 콘텐츠를 변형 X 리듀스 결합(combine)이라고 불려야 마땅한 기능, 컨테이너 내부의 콘텐츠를 하나로 합하는 기능 실행 두가지 형태로 구현, 첫 번째 리듀스는 클로저가 각 요소를 전달받아 연산한 후 다음 클로저 실행을 위해 반환하며 컨테이너를 순환하는 형태 func reduce(_ initialResult: Result, _ nextPartia..

Programming/Swift 2021.10.15

[Swift] 문법 다시보기 - 클로저(closure)

클로저 함수형 프로그래밍 패러다임을 접할 때 꼭 알아야할 개념 클로저, 제네릭, 프로토콜, 모나드 등이 결합하여 강력한 스위프트 C 언어나 Objective-C의 블록 또는 람다와 유사 클로저는 일정 기능을 하는 코드를 하나의 블록으로 모아놓은 것을 말함 → 함수는 클로저의 한 형태이다 { (**매개변수들**) -> **반환 타입** in **실행 코드** } // 클로저 표현 간소화 let reversed1: [String] = names.sorted { (first: String, second: String) -> Bool in return first > second } let reversed2: [String] = names.sorted { (first, second) -> Bool in retur..

Programming/Swift 2021.10.14

[Swift] 문법 다시보기 - 인스턴스 생명 및 소멸, 접근제어

야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다. 인스턴스 생성 및 소멸 실패 가능한 이니셜라이저(Failable initializer) 클래스, 구조체, 열거형 등에 모두 정의 가능 실패했을 때 nil 반환하여 타입이 옵셔널로 지정, init? 키워드 사용 접근제어 모듈과 소스파일 스위프트의 접근제어는 모듈과 소스파일을 기반으로 설계 모듈 : 배포할 코드의 묶음 단위, 통상 하나의 프레임워크나 라이브러리 또는 애플리케이션이 모듈 단위가 될 수 있음, import 사용 소스파일 : 하나의 스위프트 소스 코드 파일 기본 접근 제어 키워드 : internal

Programming/Swift 2021.10.13

[Swift] 문법 다시보기 - 메서드

야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다. 메서드 인스턴스를 함수처럼 호출하도록 하는 메서드 특정 타입의 인스턴스를 문법적으로 함수를 사용하는 것처럼 보이게 하는 메서드 callAsFunction 이라는 이름의 메서드 구현 매개변수와 반환타입만 다르면 원하는 만큼 생성 가능, mutating, throws, rethrows도 함께 사용 가능 타입 메서드 타입 자체에 호출이 가능한 메서드를 타입 메서드라고 부른다, static 또는 class 사용 가능 static 키워드 사용, 해당 키워드 사용 시 상속 불가 class로 정의하면 상속 후 메서드 재정의가 가능

Programming/Swift 2021.10.13

[Swift] 문법 다시보기 - 프로퍼티

야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다. 프로퍼티 타입 프로퍼티 각각의 인스턴스가 아닌 타입 자체에 속하는 프로퍼티, 타입 자체에 영향을 미친다 저장 타입 프로퍼티 → 변수 또는 상수 선언 연산 타입 프로퍼티 → 변수로만 선언 저장 타입 프로퍼티 → 반드시 초깃값 설정, 지연 연산, 지연 저장 프로퍼티와는 조금 다르게 다중 스레드 환경이라고 하더라도 단 한 번만 초기화된다는 보장을 받는다. 코드 class AClass { // 저장 타입 프로퍼티 static var typeProperty: Int = 0 // 저장 인스턴스 프로퍼티 var instanceProperty: Int = 0 { didSet { // Self.typeProperty는 // AClass.typeProper..

Programming/Swift 2021.10.12

[Swift] 문법 다시보기 - 구조체와 클래스의 차이

야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다. 구조체와 클래스의 차이 같은점 값을 저장하기 위해 프로퍼티를 정의할 수 있다 기능 실행을 위해 메서드를 정의할 수 있다 서브스크립트 문법을 통해 구조체 또는 클래스가 갖는 값(프로퍼티)에 접근하도록 서브스크립트를 정의할 수 있다 초기화될 때의 상태를 지정하기 위해 이니셜라이저를 정의할 수 있다 초기구현과 더불어 새로운 기능 추가를 위해 익스텐션을 통해 확장할 수 있다 특정 기능을 실행하기 위해 특정 프로토콜을 준수할 수 있다 다른점 구조체는 상속할 수 없다 타입캐스팅은 클래스의 인스턴스에만 허용된다 디이셜라이저는 클래스의 인스턴스에만 활용할 수 있다 참조 횟수 계산(RC)은 클래스의 인스턴스에만 적용된다 값 타입과 참조 타입 구조체는 값 ..

Programming/Swift 2021.10.12

[Swift] 문법 다시보기 - 함수

야곰 스위프트 프로그래밍 책을 읽으며 기억해둘 문법을 정리합니다. 함수 일급객체, 하나의 데이터 타입으로 사용할 수 있음 각 함수는 매개변수 타입과 반환 타입으로 구성된 하나의 타입으로 사용(정의)할 수 있다는 뜻 어떤 상황에서 유용하게 사용할 수 있을지 고민! 함수의 전달인자로 값을 전달할 때는 보통 값을 복사해서 전달한다 값이 아닌 참조를 전달하려면 입출력 매개변수(inout)를 사용한다 var numbers: [Int] = [1, 2, 3] func nonReferenceParameter(_ arr: [Int]) { var copiedArr: [Int] = arr copiedArr[1] = 1 } func referenceParameter(_ arr: inout [Int]) { arr[1] = 1 ..

Programming/Swift 2021.10.11
728x90
반응형