본문 바로가기
Programing/Swift & Xcode

Swift 문법정리 #3

by Benedictus711 2022. 9. 4.
728x90
값 타입 / 참조 타입
Class
전통적인 OOP 관점에서의 클래스
단일상속
(인스턴스/타입) 메서드
(인스턴스/타입) 프로퍼티
참조타입
Apple 프레임워크의 대부분 큰 뼈대는 모드 클래스로 구성
Struct
C 언어 등의 구조체보다 다양한 기능
상속 불가
(인스턴스/타입) 메서드
(인스턴스/타입) 프로퍼티
값 타입
Swift의 대부분 큰 뼈대는 모두 구조체로 구성
Enum
다른 언어의 열거형과는 많이 다른 존재
상속 불가
(인스턴스/타입) 메서드
(인스턴스/타입) 연산 프로퍼티
값타입
Enumeration
유사한 종류의 여러 값을 유의미한 이름으로 한 곳에 모아 정의
열거형 자체가 하나의 데이터 타입
열거형의 case 하나하나 전부 하나의 유의미한 값으로 취급
선언 키워드 - enum

 

구조체는 언제 사용하나?

연관된 몇몇의 값들을 모아서 하나의 데이터 타입으로 표현하고 싶을때
다른 객체 또는 함수 등으로 전달될 때 참조가 아닌 복사를 원할 때
자신을 상속할 필요가 없거라 자신이 다른 타입을 상속받을 필요가 없을 때
Apple 프레임워크에서 프로그래밍을 할 때에는 주로 클래스를 많이 사용

 

값(Value) 타입 - 데이터를 전달할 때 값을 복사하여 전달
참조(Reference) 타입 - 데이터를 전달할 때 값의 메모리 위치를 전달

 

/* 클래스, 구조체/열거형 비교 */

class SomeClass {
    var someProperty: String = "Property"
}

var someClassInstance: SomeClass = SomeClass()

func someFunction(classInstance: SomeClass) {
    let loclaVar: SomeClass = classInstance
    loclaVar.someProperty = "ABC"
}

someFunction(classInstance: someClassInstance)
print(someClassInstance.someProperty)

result : ABC

 

클로저
코드의 블럭
일급 시민(first-citizen)
변수, 상수 등으로 저장, 전달인자로 전달이 가능
함수 : 이름이 있는 클로저

형식

{ (매개변수 목록) -> 반환타입 in
	//실행코드
}

//함수를 사용한다면
func sumFunction(a: Int, b: Int) -> Int {
	return a + b
}

var sumResult: Int = sumFunction(a: 1, b: 2)

print(sumResult) // 결과값 : 3

 

클로저 표현

1. 후행 클로저 : 함수의 매개변수 마지막으로 전달되는 클로저는 후행클로저로 함수 밖에 구현 가능

2. 반환타입 생략 : 유추할 수 있는 매개변수, 반환 타입 생략가능

3. 단축 인자 이름 : 전달인자의 이름이 굳이 필요없고, 유추할 수 있는 경우 전달인자 이름을 $0,$1,$2... 로 표현 가능

4. 암시적 반환 표현 : 반환값이 있는경우 마지막 줄의 return을 생략하더라도 반환 값으로 취급

 

728x90

'Programing > Swift & Xcode' 카테고리의 다른 글

swift 문법 정리 #2  (0) 2022.06.19
swift 문법 정리 #1  (0) 2022.05.10

댓글