본문 바로가기

etc40

클로저 고급 오늘은 클로저 고급 - 다양한 표현을 알아보았다. func calculate(a: Int, b: Int, method: (Int, Int) -> Int) -> Int { return method(a,b) } var result: Int 먼저 함수에 클로저를 불러와 사용하게끔 선언해주고, 후행 클로저 result = calculate(a: 10, b: 10) { (left: Int, right: Int) -> Int in return left + right } print(result) // 20 후행 클로저 - 클로저가 함수의 마지막 전달인자라면, 마지막 매개변수 이름을 생략한 후 함수 소괄호 외부에 클로저를 구현할 수 있다. 반환타입 생략 result = calculate(a: 10, b: 10, met.. 2021. 5. 26.
클로저 코드의 블럭이라고도 불리우는 클로저 일급 시민(first-citizen)이기에 변수, 상수 등으로 저장이 가능 하고 전달인자로 전달이 가능하다. (다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체) - 위키피디아 함수는 이름이 있는 클로저. 클로저의 일종이라고 보면 된다. { (매개변수 목록) -> 반환타입 in 실행코드 } 이러면 코드의 블럭이 된다. 매개변수가 필요 없으면 매개변수 를 안넣어도 된다. 함수와 다르게 이름정의는 필요하지는 않지만, 매개변수 전달과 반환 값이 존재 할 수 있다는 점이 동일합니다. 함수는 이름이 있는 클로저입니다. func sumFunction(a: Int, b: Int) -> Int { return a + b } var sumReslut: Int = sumF.. 2021. 5. 24.
클래스 vs 구조체 / 열거형 값 타입/ 참조 타입 class 구조체 열거형 class 는 다른것과 차이점이 거의 없지만, 단일상속만 된다. (인스턴스/타입) 메서드 (인스턴스/타입) 프로퍼티 참조 타입 Apple 프레임워크 대부분의 큰 뼈대는 모두 클래스로 구성 되어있다. 구조체는 다른 언어들의 구조체보다 다양한 기능을 제공한다. 상속이 불가능 값 타입을 가지고 있다. Swift의 대부분의 큰 뼈대는 모두 구조체로 구성되어있다. 열거형 다른 언어의 열거형과는 많이 다른 존재 상속 불가 값 타입 열거형 자체가 하나의 데이터 타입이고 case 하나하나가 다 유의미한 값으로 취급한다. 구조체는 언제 사용하나? 연관된 몇몇의 값들을 모아서 하나의 데이터 타입으로 표현하고 싶을 때 다른 객체 또는 함수 등으로 전달될 때 참조가 아닌 복사를 .. 2021. 5. 24.
열거형(enum) 스위프트의 열거형은 다른 언어의 열거형과는 다르게굉장히 강력한 기능을 가지고 있다. 따라서 많이 알고 있으면 스위프트 언어를 할때 이득이 많이 될 것이다. enum 이름 { case 이름1 case 이름2 case 이름3,이름4,이름5 ... } 열거형의 각 case는 고유의 값으로 취급이 된다. C의 열거형에서는 케이스별로 정수형이 자동으로 취급됐던것과는 다른 것이다. 열거형 사용 enum Weekday { case mon case tue case wed case thu, fri, sat, sun } var day: Weekday = Weekday.mon // 열거형의 케이스를 나타내는 문법은 열거형.타입이름 day = .fri // 축약도 가능, 근데 처음에 선언을 애매하게 해주면 축약 불가능 pri.. 2021. 5. 24.
클래스 오늘은 클래스에 대해 공부하였다. 클래스는 구조체와 거의 비슷하지만, 약간 다른점이 존재한다. 구조체는 값 타입이지만 클래스는 참조 타입이라는 것이 차이점 중 하나이다. 그리고 중요한 것 하나는 Swift의 클래스는 다중상속이 되지 않는다. (충격) 정의 class 이름 { /* 구현부 */ } 클래스의 정의는 위와 같다. 프로퍼티와 메서드 class Sample { var mutableProperty: Int = 100 // 가변 프로퍼티 let immutableProperty: Int = 100 // 불변 프로퍼티 static var typeProperty: Int = 100 // 타입 프로퍼티 // 인스턴스 메서드 func instanceMethod() { print("instance method".. 2021. 5. 21.
구조체 오늘은 구조체에 대해 알아보았다. sturct 이름 { /* 구현부 */ } 구조체의 정의는 위 코드와 같다. 프로퍼티 및 메서드 // 메서드 - 타입 안에 들어가 있는 함수 struct 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") } } 메서드는 타입안.. 2021. 5. 21.

IT_learning's Commit