SWIFT

Language/Swift

Swift - 프로퍼티(Properties)

프로퍼티의 정의 및 사용프로퍼티는 구조체, 클래스, 열거형 내부에 구현할 수 있다.(열거형 내부에는 연산 프로퍼티만 구현 가능) 연산 프로퍼티는 var키워드로만 선언 가능하다. 연산 프로퍼티는 읽기 전용으로는 구현 가능하지만, 쓰기 전용으로는 불가능하다. 읽기, 쓰기 둘 다 가능하게 하려면 get, set 블럭을 구현하면 된다. set 블럭에서 암시적 파라미터로 newValue를 사용할 수 있다. 종류저장 프로퍼티(Stored Properties)연산 프로퍼티(Computed Properties)타입 프로퍼티(Type Properties) 코드 예시struct Student { // 인스턴스 저장 프로퍼티 var name: String = "" var `class`: String ..

Language/Swift

Swift - 클로저(Closures) - 2

지난 글에 이어 클로저에 대해 더 자세히 들여다보는 시간을 가져보려한다. 여러 클로저 표현기본 클로저 표현func calculate(x: Int, y: Int, method: (Int, Int) -> Int) -> Int { return method(x, y)}이렇게 클로저를 작성하는 것은 이미 저번 글에서 확인했다. 후행 클로저(Trailing Closures)함수 파라미터 마지막으로 전달되는 클로저는 후행 클로저로 함수 외부에 구현할 수 있다. 이는 마치 코틀린 SAM(Single Abstract Method) 변환과 모습이 비슷해보인다.var result: Intresult = calculate(x: 10, y: 10) { (left: Int, right: Int) -> Int in re..

Language/Swift

Swift - 클로저(Closures) - 1

클로저(Closures)는 무엇일까?클로저는 실행 가능한 코드 블럭이다.함수와 달리 이름이 정의되지 않아도 괜찮지만 함수처럼 파라미터 전달 및 리턴 값이 존재할 수 있다.일급 객체로써 변수, 상수 등에 저장이 가능하고 함수의 파라미터에도 전달이 가능하다. 기본 클로저 문법 알아보기{ (parameters) -> returnType in // running code}클로저는 기본적으로 중괄호로 감싸져있다.괄호를 통해 파라미터를 정의하고 "->" 를 이용해 리턴 타입을 명시한다."in" 키워드를 이용해 실행 코드와 분리한다. 간단한 예시로 사용해보기let sum: (Int, Int) -> Int = { (x: Int, y: Int) in return x + y}let result: Int = sum(1..

Language/Swift

Swift - Class, Struct, Enum 비교하기

다시 한 번 요약하는 Class(클래스)전통적인 객체지향 관점의 클래스단일 상속참조 타입 다시 한 번 요약하는 Struct(구조체)상속 불가값 타입 다시 한 번 요약하는 Enum(열거형)상속 불가값 타입열거형은 자체가 하나의 데이터 타입으로 취급되고, case 전부 각각 유의미한 값으로 취급된다. 그럼 Class(클래스)와 비슷한 Struct(구조체)는 언제 사용할까?연관된 값들을 모아 하나의 데이터 타입으로 표현하려 할 때다른 객체나 함수 등에 전달될 때 복사를 원할 때(참조가 아닌)상속해줄 필요가 없거나 다른 타입을 상속받을 필요가 없을 때 여기서 Value(값) vs Reference(참조) 차이가 뭘까Value(값) 타입은 데이터 전달 시 값을 복사하여 전달한다.Reference(참조) 타입은 데..

Language/Swift

Swift - 열거형(Enum)

열거형(Enum)은 무엇일까?열거형은 관련된 값을 정의하는 타입이다.따라서, 이름을 지을 때는 파스칼 케이스로 작성한다.열거형 내부의 case는 그 자체가 고유 값이기 때문에 카멜 케이스로 작성한다. 간단한 열거형 만들기요일에 대한 열거형을 만든다면 아래처럼 만들어볼 수 있다.enum DayOfWeek { case mon case tue case wed, thu, fri, sat, sun}mon와 tue처럼 한 줄씩 선언해도 되고, 마지막 줄처럼 콤마로 구분하여 한 줄로 선언할 수도 있다. 열거형 사용해보기var day: DayOfWeek = DayOfWeek.monday = .thuswitch day { case .mon, .tue, .wed, .thu: print("평일") c..

Language/Swift

Swift - 클래스(Class)

1. 클래스란 무엇일까? 클래스는 참조(reference) 타입이다. 이름은 파스칼 케이스로 작성한다. 클래스는 다중 상속이 불가능하다. 2. 클래스 관련 문법 클래스를 선언할 때는 class 키워드를 사용한다. class Sample { // 가변 프로퍼티 var mutableProperty: Int = 100 // 불변 프로퍼티 let immutableProperty: Int = 100 // 타입 프로퍼티 static var typeProperty: Int = 100 // 인스턴스 메서드 func instanceMethod() { print("instance method") } // 타입 메서드 static func typeMethod() { print("type method - static") } ..

Language/Swift

Swift - 구조체(Struct)

1. 구조체란 무엇일까? 구조체는 값(value) 타입이다. 스위프트에서 대부분 타입은 구조체라고 한다. 타입이름은 파스칼 케이스를 사용한다. 2. 구조체 관련 문법 구조체를 선언할 때는 C언어처럼 struct 키워드를 사용한다. struct Test { // 가변 프로퍼티 var mutableProperty: Int = 100 // 불변 프로퍼티 let immutableProperty: Int = 100 // 타입 프로퍼티 static var typeProperty: Int = 100 // 인스턴스 메서드 func instanceMethod() { print("instance method") } // 타입 메서드 static func typeMethod() { print("type method") } ..

Language/Swift

Swift - 옵셔널(Optional)

1. 옵셔널의 개념 값이 있을수도, 없을수도 있음을 표현한다. nil이 할당될 수 있는지 없는지 여부의 표현이다. 2. 옵셔널을 쓰는 이유 - nil의 가능성을 코드만으로 표현할 수 있다. - 문서/ 주석 작성 시간을 절약할 수 있다. - 전달받은 값이 옵셔널이 아니라면 nil 체크를 하지 않고 사용할 수 있다. - 예외 상황을 최소화하는 안전한 코딩 기법이다. 3. 옵셔널 문법과 선언 옵셔널 문법은 enum + generics 라고 한다. enum Optional: ExpressibleByNiliteral { case none case some(Wrapped) } let optionalValue: Optional = nil let optionalValue: Int? = nil 나는 지금까지 자바나 코틀..

Language/Swift

Swift - 반복문 (for-in, while, repeat-while)

1. for-in 기존 언어의 for each문과 유사하다. Dictionary의 경우, iteration 아이템으로 튜플이 들어온다. var integers = [1, 2, 3] for (integer in integers) { print(integer) } let people = ["kim": 20, "lee": 35, "park": 50] for (name, age) in people { print("\(name), \(age)") } 2. while, repeat-while 먼저 while문은 사용형태가 이전 조건문에서의 차이점 정도만 다르고 방법은 같다. repeat-while문은 do-while과 형태와 동작이 비슷하다. while integers.count > 2 { //실행문 } repea..

Language/Swift

Swift - 함수 고급

1. 파라미터 기본값 파라미터에 기본으로 전달될 값을 미리 지정해둘 수 있다. 여기서 기본값을 지정할 파라미터는 파라미터 목록 중 뒤쪽에 위치하는 것이 좋다고 한다. func 함수 이름(파라미터 이름: 파라미터 타입, 파라미터 이름: 파라미터 타입 = 파라미터 기본값) -> 리턴 타입 { //함수 구현 return 리턴값 } //게다가 함수 호출 시 기본값이 있는 파라미터는 생략이 가능하다 2. 전달인자 레이블(Argument Label) 사용자 입장에서 함수 호출 시 파라미터 역할을 더 명확히 알 수 있도록 할 때 사용한다. 전달인자 레이블을 변경해 동일한 이름의 함수를 중복으로 생성 가능하다. 이 부분이 제대로 이해가 안됐는데 밑에 코드로 다시 적어보겠다. func 함수 이름(전달인자 레이블 파라미터..

BonusTrack02.dev
'SWIFT' 태그의 글 목록