Swift 프로퍼티 래퍼
Swift 2022. 2. 10. 15:56

프로퍼티 래퍼는 스위프트 5.1부터 나온 개념으로, 클래스와 구조체 구현부에 게터(getter), 세터(setter), 연산 프로퍼티(computed property) 코드의 중복을 줄이는 방법을 제공한다. 프로퍼티 래퍼란? 클래스나 구조체 인스턴스에 값을 할당하거나 접근할 때 값을 저장하거나 읽어내기 전에 변환 작업이나 유효성 검사를 해야 할 경우가 존재한다. 물론 연산 프로퍼티로도 위와 같은 작업은 할 수 있다. 그러나 여러 클래스나 구조체에 생성한 연산 프로퍼티들이 유사한 패턴을 갖는 경우가 빈번하게 발생한다. 클래스나 구조체의 구현부마다 비슷한 역할을 하는 연산 프로퍼티를 복사 붙여넣기 할 수도 있다. 이것은 생산성이 매우 떨어질 뿐만 아니라, 계산 방법이 수정되는 일이 생기면 각각의 클래스나 구..

구조체와 클래스
Swift 2022. 2. 10. 14:37

Swift는 구조체를 사용한다. 기본적으로 구조체도 클래스처럼 객체 지향 프로그래밍의 기초를 따르며 데이터와 기능을 재사용할 수 있는 객체로 캡슐화하는 방법을 제공한다. 구조체의 선언 방법 구조체도 클래스와 선언 방법이 비슷하다. 단지 class 대신 struct 키워드를 사용하는게 다르다. struct Address { private var cityName : String = "" var city : String { get { cityName } set { cityName = newValue.uppercased() } } } 클래스와 마찬가지로 구조체도 확장될 수 있으며, 프로토콜을 채택하거나 초기화를 가질 수 있다. 그렇다면 구조체는 클래스와 무엇이 다를까? 값 타입 vs 참조 타입 클래스와 구조체는..

Swift 함수 - 2
Swift 2022. 2. 9. 19:41

가변개수 매개변수 매개변수의 개수를 여러개 받을 수 있다. 가령 여러 개의 정수를 받아 그 합을 반환해주는 함수를 선언한다고 생각해보자. 정수는 0개부터 엄청 큰 수까지 받을 수 있다 func addInt(_ ints:Int...) -> Int { var ret = 0 for int in ints { ret += int } return ret } print(addInt(1,2,3,4,5,6,7,8,9,10)) 매개변수를 여러 개 받을 수 있도록 하려면, 매개변수의 타입 뒤에 0개 또는 그 이상을 받는따는 것을 의미하는 ... 를 사용하여 가변개수 매개변수를 선언할 수 있다 매개변수는 기본적으로 상수로 취급된다 Swift 는 기본적으로 함수형 패러다임을 따르는 언어다. 함수형 패러다임에서 함수는 부수 효과..

Swift 5 - 함수 1
Swift 2022. 2. 9. 18:11

스위프트에서 함수를 선언하는 방법 func 함수명 (매개변수 이름: 매개변수 타입, ...) -> 반환 결과 타입 { ... //함수 코드 } 스위프트에서 함수를 선언하는 방법은 여타 언어들과 다르지 않다. func - 함수라고 컴파일러에게 알려주는 키워드 함수명 - 함수의 이름 매개변수 이름 - 매개변수의 이름 매개변수 타입 - 매개변수의 타입 반환 결과 타입 - 해당 함수가 반환할 타입을 의미. 만약 아무 타입도 반환하지 않는다면 선언하지 않는다 함수 코드 - 작업을 수행할 코드 func sayHello() { print("hello") } 위의 함수는 아무 매개변수도 받지 않고, 아무 값도 반환하지 않고 그저 블럭 내의 코드를 실행하는 함수다 func buildHelloMessage(name : S..