본문 바로가기

# 02/Swift

[Swift] 클로저 기본 - 코드의 블럭 - 일급 시민(first-citizen) - 변수, 상수 등으로 저장, 전달인자로 전달이 가능 - 함수 : 이름이 있는 클로저 { (매개변수 목록) -> 반환타입 in실행 코드} // 함수를 사용한다면 func sumFunction(a: Int, b: Int) -> Int {return a+b} var sumResult: Int = sumFunction(a: 1, b: 2) print(sumResult) // 3 // 클로저의 사용 var sum: (Int, Int) -> Int = { (a: Int, b: Int) inreturn a + b} sumResult = sum(1, 2) print(sumResult) // 3 // 함수는 클로저의 일종이므로 // sum 변수에는 당연히 함수도..
[Swift] 값 타입과 참조 타입 Class- 전통적인 OOP 관점에서의 클래스- 단일 상속- (인스턴스/타입) 메서드- (인스턴스/타입) 프로퍼티- 참조 타입- Apple 프레임워크 대부분의 큰 뼈대는 모두 클래스로 구성 Struct- C 언어 등의 구조체보다 다양한 기능- 상속 불가- (인스턴스/타입) 메서드- (인스턴스/타입) 프로퍼티- 값 타입- Swift 대부분의 큰 뼈대는 모두 구조체로 구성 Enum- 다른 언어의 열거형과는 많이 다른 존재- 상속 불가- (인스턴스/타입) 메서드- (인스턴스/타입) 연산 프로퍼티- 값 타입- Enumeration- 유사한 종류의 여러 값을 유의미한 이름으로 한 곳에 모아 정의예) 요일, 상태값, 월(Month) 등- 열거형 자체가 하나의 데이터 타입, 열거형의 case 하나하나 전부 하나의 유..
[Swift] 열거형 enum 은 타입이므로 대문자 카멜케이스를 사용하여 이름을 정의한다.각 case는 소문자 카멜케이스로 정의한다.각 case는 그 자체가 고유의 값이다. enum 이름 {case 이름1case 이름2case 이름3, 이름4, 이름5. . .} enum Weekday {case moncase tuecase wedcase thu, fri, sat, sun} var day: Weekday = Weekday.monday = .tue // 이넘 사용 시 default 구현 안해줘도 됨.// 단 하나라도 빼먹을 시 default 구현 해 줘야됨. switch day {case .mon, .tue, .wed, .thu:print("평일입니다")case Weekday.fri:print("불금 파티!!!")case .sa..
[Swift] 클래스 클래스 - 구조체와 유사- 구조체는 값 타입 클래스는 참조 타입- 다중 상속 안됨 class 이름 {구현부} class Sample {var mutableProperty: Int = 100 // 가변 프로퍼티let immutableProperty: Int = 100 // 불변 프로퍼티 static var typeProperty: Int = 100 // 타입 프로퍼티 // 인스턴스 메서드func instanceMethod() {print("instance method")} // 타입 메서드// 재정의 불가 타입 메서드 - staticstatic func typeMethod() {print("type method - static")} // 재정의 가능 타입 메서드 - classclass func classM..
[Swift] 구조체 struct 이름 {구현부} struct Sample {var mutableProperty: Int = 100 // 가변 프로퍼티 - 구조 안의 변수let immutableProperty: Int = 100 // 불변 프로퍼티 static var typeProperty: Int = 100 // 타입 프로퍼티 // 인스턴스 메서드func instanceMethod() { } // 타입 메서드static func typeMethod() { }} // 가변 인스턴스var mutable: Sample = Sample() mutable.mutableProperty = 200 // 불변 인스턴스let immutable: Sample = Sample() // 에러 뜸immutable.mutableProperty = ..
[Swift] 옵셔널 Optional 값이 '있을 수도 있고, 없을 수도 있음' let optionalConstant: Int? = nil // 다음은 에러let someConstant: Int = nil // nil 의 가능성을 명시적으로 표현 func someFunction(someOptionalParam: Int?) {// . . .} func someFunction(someParam: Int) {// . . .} Optional(enum + general) enum Optional : ExpressibleByNilLiteral {case nonecase some(Wrapped)} // Optional 를 간단하게 Int? 로 표현 하는 것let optionalValue: Optional = nillet optional..
[Swift] 반복문 // Array 인 경우 for item in items { code } // Dictionary의 item은 key와 value로 구성된 튜플 타입이다. for (name, age) in people { print("\(name): \(age)") } // 역시 () 생략 가능 while integer.count > 1 { integers.removeLast() } // do while 과 동일 repeat { integers.removeLast() } while integers.count > 0 Dart for (int i = 0; i < 5; i++) {} while (x < 10) {} for (var data in list) {}
[Swift] 조건문 // 기존과 다른 점은 () 생략 가능! {} 생략 안됨!! if someInteger 100 {print("100 초과")} else {print("100")} // switch 동일 // 범위 연산자를 활용하면 더욱 쉽고 유용하다.// break 생략 가능 (fallthrough 사용 하면 다음 case도 호출 가능)// default 안쓰면 에러 뜸 switch someInteger {case 0:print("zero")case 1..