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 |
댓글