Swift 5분 문법 이론 정리
Swift를 사용하여 개발할때 필요한 문법들의 이론을 간단하게 정리해보았습니다.
Swif
'iOS프로그래밍기초 한성현교수님의 강의중 내용 변형 및 요약'
자료형(데이터 타입)
Int - 정수형을 나타내고 저장하는데 사용하는 자료형 [//1, 10, 100, 1000등]
Double - 실수형을 나타내고 저장하는데 사용하는 자료형 [//12.3, 70.5, 182.3등]
Bool - 참 또는 거짓 (1 or 0)조건을 나타내고 저장하는데 사용하는 자료형 [//true or false 만 사용]
Character - 문자, 숫자, 문장 부호, 심볼 같은 문자 하나를 저장할때 사용하는 자료형 [//3, : , C 등]
String - 단어, 문장을 구성하고 저장하는데 사용하는 자료형(일련의 문자) [//name, age, cho등]
상수와 변수
상수(let) - 상수(constant)는 데이터 값을 저장하기 위한 메모리 공간
[값이 한번 할당되면 이후에 변경할 수 없다. -> 변할 수 없는 값.]
변수(var) - 변수(variable)는 프로그램에서 사용될 데이터를 저장하기 위한 메모리 공간
[변수에 할당된 값은 변경 가능하다. -> 변경 가능한 값.]
*애플은 코드의 효율성과 실행 성능을 높이기 위해서 변수(var)보다는 상수(let)를 사용하라고 권장한다.
Tuple
튜플(Tuple) - 여러 값을 하나의 개체에 일시적으로 묶는 방법을 의미
[var choTuple = ("Hi", 1, 30.4)]
optional
옵셔널(optional) - 값을 반환할 때 *오류가 발생할 가능성이 있는 값은 옵셔널 타입이라는 객체로 감싸서 반환하는 type을 의미 [사용 방법 : 자료형 뒤에 ? 또는 ! 를 붙여준다.]
*오류 = 변수 또는 상수에 아무런 값이 할당되지 않는 상황
형 변환
형 변환- (as 연산자를 이용한 upcasting, downcasting)
upcasting(업 캐스팅) - 자식 인스턴스를 부모 클래스형으로 형 변환 하는 것을 의미
downcasting(다운 캐스팅) - 부모 인스턴스를 자식 클래스로 변환 하는 것을 의미
operator(연산자)
연산자(operator) - 연산을 할 수 있는 기호로 사용되는 것을 의미합니다.
-기본 할당 연산자 ( =을 이용한 연산자 )
-산술 연산자 (+, -, /, *, %등)
-복합 할당 연산자 (x = x+y, z= z-y등)
-증가 연산자와 감소 연산자 (x = x+1, y = y-1등)
-비교 연산자 [==, <=, >=, !=등]
-불리언 논리 연산자 [!(not), &&(and), ||(or)등)
-범위 연산자(..., ..<등
-삼항 연산자[조건 ? 참 일때 값 : 거짓 일때 값]
-Nil합병 연산자 - 옵셔널 변수가 nil일 때 할당되는 값을 넣어주는 연산자
제어문
for in 반복문 - 컬렉션 또는 숫자 범위 내에 있는 목록을 반복하는 제어문
while 반복문 - 어떠한 조건을 만족할 때까지는 반복해야 하는 경우 while 반복문 사용
break - 반복문에서 빠져나오기 위하여 break문 사용
continue - 반복문에서 continue문 이후의 모든 코드를 건너뛰고 처음으로 돌아갈때 사용
if else - if문을 이용하여 참일때 값을 출력, 거짓일때는 else문을 이용하여 출력
guard let - 조건이 거짓일때 else문을 실행, 그게 아니라면 guard문 밖에 print문을 출력
switch_case문 - switch{ } 문 안에 있는 case조건에서 맞는 값을 찾아 출력
[fallthrough - switch_case문에서 맞는 조건의 case를 만나도 빠져 나가지 않고 계속 진행할때 사용한다.]
where - 특정 패턴과 결합하여 부가적인 조건을 추가하기 위하여 사용
함수
function(함수) - 특정 작업을 수행하는 코드 블록으로 가장 처음 func를 붙여준다.
[func 함수명(매개변수 이름 : 매개변수 타입,...) -> 반환값 타입{ //함수 코드 }로 마무리
method(메서드) - 특정 클래스, 구조체, 열거형 내의 함수를 의미한다.
1급 객체(first class object), 1급 시민(first class citizen)
1) 함수를 변수에 저장가능
2) 함수를 매개변수로 사용
3) 함수를 리턴 값으로 사용할 수 있다.
Closure(클로저)
클로저(closure) - 이름 없는 익명의 함수로 독립적인 코드 블록을 나타낸다. [상수 또는 변수를 함수처럼 사용하는 것을 의미]
후행 클로저(trailing closure) - 클로저가 함수의 마지막 argument라면 마지막 매개변수 이름을 생략한 후 외부에 클로저를 구현하는 방법
객체지향 용어 비교
Property(프로퍼티) - 특성, 멤버변수(Member Variable)를 나타낸다. [선언 값]
Method(메소드) - 행위, 멤버 함수(Member Function)를 나타낸다. [작동 법]
Class(클래스)
-***클래스로부터 만들어진 객체를 인스턴스라고 한다.
클래스(Class) - 객체가 생성 되었을때 어떠한 모습을 보일 것인지를 정의한 이름
*객체(Object) - 데이터 변수(data variable) or 속성(property), 함수(fucntion) or 메서드(method)
*인스턴스(instance) - 실제로 메모리에 할당된 객체(object)
_소프트웨어 애플리케이션을 개발하는 데 사용되는, 쉽게 사용할 수 있으며 재사용 할 수 있는 기능을 가진 모듈 Initialization[init()] - 클래스, 구조체, 열거형(enum) 인스턴스가 생성되는 시점에서 해야 할 초기화 작업
Failable Initializers - 실패 가능한 init 생성자, 값이 없거나 오류가 난다면 옵셔널 값을 리턴한다. [init() --> init? or init!]
method overloading[생성자 중첩] - 매개변수의 개수와 자료형이 다른 같은 이름의 함수를 여러 개 정의
상속 - 자식클래스에서 부모클래스가 가진 것을 물려 받는것을 의미
override(오버라이드) - 부모클래스와 자식클래스에 같은 메소드가 있다면 자식클래스를 우선
overroding(오버로딩) - 하나의 클래스 안에 같은 이름의 함수를 여러개 사용하는것을 의미
Protocol(프로토콜)
프로토콜(protocol) - [채택되었다] 특정 클래스와 관련없는 프로퍼티, 메서드(행위) 선언 집합을 의미
access modifier(접근제어)
접근제어 - open(높은 접근 수준) -> public -> internal -> fileprivate -> private(낮은 접근 수준)
enum(열거형)
열거형(enum) - 관련 있는 데이터들이 멤버로 구성되어 있는 자료형 객체
extension(익스텐션)
익스텐션(extension) - Swift언어에서 확장방법으로, 클래스, 구조체, 열거형, protocol에 새로운 기능을 추가하는것을 의미