본문 바로가기

iOS/swift 문법6

6. 구조체와 클래스 6. 구조체와 클래스 1) 구조체VS클래스 공통점 프로퍼티 메소드 서브스크립트 초기화 블록 확장 프로토콜 변수나 상수를 사용하여 값을 저장하는 프로퍼티를 정의할 수 있다. 함수를 사용하여 기능을 제공하는 메소드를 정의할 수 있다. 속성값에 접근할 수 있는 방법을 제공하는 서브스크립트를 정의할 수 있다. 객체를 원하는 초기 상태로 설정해주는 초기화 블록을 정의할 수 있다. 객체에 함수적 기능을 추가하는 확장(extends) 구문을 사용할 수 있다. 특정 형식의 함수적 표준을 제공하기 위한 프로토콜을 구현할 수 있다. 클래스만 가지고 있는 기능들 상속 타입 캐스팅 소멸화 구문 참조에 의한 전달 클래스의 특성을 다른 클래스에서 물려줄 수 있다. 실행 시 컴파일러가 클래스 인스턴스의 타입을 미리 파악하고 검사할.. 2019. 9. 21.
5. 클로저 & 일급 객체 함수 5. 클로저(Clousure) 컴퓨터 언어에서 클로저(Closure)는 일급 객체 함수(first-class functions)의 개념을 이용하여 스코프(scope)에 묶인 변수를 바인딩 하기 위한 일종의 기술이다. 기능상으로, 클로저는 함수를 저장한 레코드(record)이며, 스코프(scope)의 인수(Factor)들은 클로저가 만들어질 때 정의(define)되며, 스코프 내의 영역이 소멸(remove)되었어도 그에 대한 접근(access)은 독립된 복사본인 클로저를 통해 이루어질 수 있다. ※ 참조 https://ko.wikipedia.org/wiki/%ED%81%B4%EB%A1%9C%EC%A0%80_(%EC%BB%B4%ED%93%A8%ED%84%B0_%ED%94%84%EB%A1%9C%EA%B7%B8.. 2019. 9. 20.
4. 함수(Function) 4. 함수(Function) 스위프트는 함수형 프로그래밍 패러다임을 채택하고 있는 언어이므로 함수형 프로그래밍의 특성을 이해하는 것이 매우 중요 func 함수이름(매개변수1: 타입, 매개변수2: 타입, ...) -> 반환타입 { 실행내용 return 반환값 } 함수의 식별자 - 함수이름(매개변수1:매개변수2:) 함수의 호출 func increment(amount: Int, times: Int) { print(amount * times) } 함수의 식별자 - increment(amount:times:) increment(amount: 5, times: 2) (Objective-C 메소드 호출 방식의 API를 수정 없이 그대로 사용하기 위해 최대한 형식을 맞춘 결과, 지금과 같은 독특한 문법이 만들어짐) O.. 2019. 9. 19.
3. 옵셔널 (Optional) 3. 옵셔널 (Optional) - 스위프트에 도입된 새로운 개념으로 언어 차원에서 프로그램의 안전성을 높이기 위해 사용하는 개념 - nil을 사용할 수 있는 타입과 사용할 수 없는 타입을 구분 - nil이란 값이 없음을 의미하는 특수한 값 var optInt: Int? optInt = 3 옵셔널 해제 및 옵셔널 바인딩 1) if 조건 사용 func intStr(str: String) { if let intFromStr = Int(str) { print("값이 변환되었습니다. 변환된 값은 \(intFromStr)입니다") } else { print("값 변환에 실패하였습니다") } } 2) guard 구문 사용 func intStr(str: String) { guard let intFromStr = In.. 2019. 9. 18.
2. 집단 자료형(Collective Types) 2. 집단 자료형(Collective Types) 배열(Array) 일련번호로 구분되는 순서에 따라 데이터가 정렬된 목록 형태 집합(Set) 중복되지 않은 유일 데이터들이 순서 없이 모인 집합 형태 튜플(Tuple) 종류에 상관없이 데이터들을 모은 자료형. 값을 변경할 수 없음 딕션너리(Dictionary) 키-값으로 연관된 데이터들이 순서 없이 모인 자료형 1) 배열(Array) 정적 선언 var countries = ["korea", "japan", "china"] as Array var countries = ["korea", "japan", "china"] as [String] var countries: Array = ["korea", "japan", "china"] var countries: [S.. 2019. 9. 17.
1. 변수 상수, 연산자, 흐름 제어 구문 1. 변수 상수 var + 변수명 let + 상수명 2. 연산자 범위 연산자 닫힌 범위 연산자(Closed range operator) 1...5 (1, 2, 3, 4, 5) 반 닫힌 범위 연산자(Half-closed range operator) 1....5 (X) 범위 연산자의 왼쪽에는 작은 숫자를 오른쪽에는 큰 숫자를 배치 대입 연산자(assignment operator) a = 1 a++ (X) a += 1 (O) 3. 흐름 제어 구문 반복문 for ~ in 구문 for in { } while 구문 / repeat ~ while 구문 while { } repeat { } while 조건문 if 구문 if { } else if { } else { } guard 구문 (※ 코드를 중첩해서 사용하지 않아.. 2019. 9. 16.