본문 바로가기

반응형

Swift/Grammar

(21)
[Swift] Guard문 안녕하세요 소진입니다 :) 오늘은 Guard문에대해 알아보도록하겠습니다! 해당 글은 꼼꼼한 재은씨 Swift: 문법편을 참고하여 작성하였습니다. guard & assert 애플리케이션이 동작 도중에 생성하는 다양한 결과값을 동적으로 확인하고 안전하게 처리할 수 있도록 확인하고 빠르게 처리할 수 있습니다. # guard 문 if문과 마찬가지로 주어진 표현식의 결과가 참인지 거짓인지에 따라 구문의 실행 여부를 결정짓는 방식의 조건문 보통 함수나 메소드에서 사용 심각한 오류가 발생할 경우, 전체 구문을 조기 종료(Early Exit)하기 위한 목적 guard의 else 블럭 내부에는 특정 코드블럭을 종료하는 지시어 (return, break 등)가 꼭 있어야 함 타입 캐스팅, 옵셔널과도 자주 사용 그 외 단순..
[Swift] Enum - 열거형 안녕하세요! 이번에는 Enum 열거형에대해 공부해보도록하겠습니다 :) 해당 포스팅은 꼼꼼한 재은씨 Swift: 문법편을 참고하여 작성하였습니다. Enum 상속 불가 값 타입 (값이 없을 수도 있음. 즉 이름 그 자체 만으로 고유한 의미를 나타낼 수 있음) 유사한 종류의 여러 값을 유의미한 이름으로 한 곳에 모아 정의한 것 예) 요일, 상태값, 월(Month) 열거형 자체가 하나의 데이터 타입 열거형의 case 하나하나 전부 하나의 유의미한 값으로 취급 정의 및 구현 enum 열거형 이름 { //열거형 멤버 정의 case 멤버값 1 case 멤버값 2,3 // 한꺼번에 멤버 선언도 가능 case ... } 열거형 타입을 생략할 수 있을 때와 없을 때 1. 열겨형 타입으로 정의된 변수에는 열거형 타입명을 ..
[Swift] 조건문 - Switch case 1. Switch case 구문 Switch 구문은 앞에서 다룬 if 와 guard 처럼 분기문의 일종이지만, 처리 방식은 앞에서와 다릅니다. switch 구문은 입력받은 값을 조건식 여부가 아니라 패턴으로 비교하고 그 결과를 바탕으로 실행 블록을 결정하는 조건문입니다. Switch 구문 형태 switch [비교 대상] { case [비교 패턴1] : [비교 패턴1이 일치했을 때 실행할 구문] case [비교 패턴2], [비교 패턴3] : [비교 패턴2 또는 3이 일치했을 때 실행할 구문] default: [어느 비교 패턴과도 일치하지 않았을 때 실행할 구문] } Switch문 문법 각 상태는 키워드 case를 통해 나타낼 수 있습니다. case 상태 끝에 콜론 ':'을 붙여 패턴을 종료합니다. 하나의 ..
[Swift] Struct - 구조체 Struct C 언어 구조체 용도와 비슷하지만, 추가로 멤버 변수(프로퍼티), 함수(메소드) 정의 가능 상속이 불가능 확장(extention) 등 기능 사용 가능 값 타입 (= Value Type) Swift의 대부분의 큰 뼈대는 모두 구조체로 구성 메모리의 Stack 영역에 존재 값 타입이 뭐에요? 값 타입이란, 데이터의 크기가 고정적이기 때문에 메모리 스택에 생성되는 것을 말 합니다. 선언 : 선언만 하면 스택에 즉시 생성되므로 선언 직후부터 데이터를 저장하는 용도로 사용할 수 있습니다. 종료 : 더 이상 참조하는 변수가 없을 때 가비지 컬렉터에 의해 파괴됩니다. 데이터 : 복사에 의해 완전한 별개의 사본이 생성 되며 복사 후 사본과 원본은 별개의 변수 입니다. 즉, 완전히 다른 두 개의 변수가 생성..
[Swift] Class - 클래스 Class 프로퍼티(클래스 안의 변수)와 메소드(클래스 안의 함수)를 가질 수 있는 컨테이너 타입을 정의하기위한 용도 일반적으로 단일 상속이 가능하지만, 프로토콜을 사용하면 다중 상속도 가능 참조타입 (=reference type) (call by reference) 형 변환(Type Casting)과 관련된 기능과 파괴자(Deinitializer)등의 기능을 가질 수 있다. iOS 프레임 워크의 대부분의 큰 뼈대는 모두 클래스로 구성 메모리의 Heap 영역에 존재 속성 (property) : 클래스에서 제공되는 변수 메소드 (method) : 클래스에서 제공되는 함수 참조 타입이 뭐에요? 참조 타입이란, 데이터의 크기가 크고 가변적이여서 동적으로 관리 되는 메모리의 힙에 생성되는 것을 말 합니다. 선언..
[Swift] 고차 함수 전달인자로 함수를 전달 받거나 함수 실행의 결과를 함수로 반환하는 함수 > map numbers의 각 요소를 2배하여 새로운 배열 반환 //MARK: - map let numbers: [Int] = [0, 1, 2, 3, 4] var doubledNumbers: [Int] var strings: [String] //MARK: for 구문 사용 doubledNumbers = [Int]() strings = [String]() for number in numbers { doubledNumbers.append(number * 2) strings.append("\(number)") } print(doubledNumbers) //[0,2,4,6,8] print(strings) // ["0","1","2","3",..
[Swift] 오류처리 Error 프로토콜과 (주로) 열거형을 통해서 오류를 표현 > 오류 처리 문법 enum 오류종류이름: Error { case 종류1 case 종류2 case 종류3 //... } // 자판기 동작 오류의 종류를 표현한 VendingMachineError 열거형 enum VendingMachineError: Error { case invalidInput case insufficientFunds(moneyNeeded: Int) case outOfStock } > 함수에서 발생한 오류 던지기 자판기 동작 도중 발생한 오류 던지기 오류 발생의 여지가 있는 메서드는 throws를 사용하여 오류를 내포하는 함수임을 표시합니다. class VendingMachine { let itemPrice: Int = 100 v..
[Swift] Extension - 익스텐션 안녕하세요!! 오늘은 Extension에대해 공부해보도록하겠습니다!! 이 글은 Swift 공식문서 The Swift 5.5 Language Guide - The Basic과 꼼꼼한 재은씨의 Swift : 문법편을 참고하여 작성하였습니다. Extensions Extensions을 해석하면 '확장' 이죠?? 단어 뜻처럼 익스텐션(Extensions)은 이미 존재하는 클래스나 구조체, 열거형 객체 혹은 프로토콜 타입에 새로운 기능을 추가하여 확장해주는 구문입니다. retroactive modeling으로 알려진 것과 같이 원본 코드를 몰라도 그 타입에 대한 기능을 확장할 수 있습니다. 익스텐션은 Objective-C의 카테고리와 유사하다고 합니다! 스위프트에서 익스텐션을 통해 구현할 수 있는 것 1. 새로운 ..

반응형