본문 바로가기

반응형

swift 기본 문법

(10)
Swift 기본 문법) 상속 알아보기 상속을 공부하는데 어려움이 항상 많았는데 좋은 포스팅이 있길래 이 글을 토대로 공부를 해보고자 한다. 클래스(Class)는 상속이 가능하며, 오직 하나의 상속만이 가능하다. 또한 메섣, 프로퍼티 등을 상속할 수 있다. Base Class(기반 클래스)란? 다른 어떤 클래스로부터도 상속받지 않은 클래스를 기반 클래스라고 한다. class Vehicle { var currentSpeed: Double = 0.0 var description: String { return "현재 속도는 \(currentSpeed)입니다. " } func makeNoise() { } } let bike = Vehicle() print(bike.description) 간단하게 Class를 만들어봤다. Vehicle이라는 Class..
swift 기본 문법) 연산 프로퍼티(get, set) 알아보기 오늘은 수업에서 다뤘던 연산 프로퍼티에 대해서 복습해보려고 한다. 우선 연산 프로퍼티의 핵심 내용은 다음과 같다. 1. 클래스, 구조체, 열거형에 사용 2. 저장 프로퍼티와 달리 저장 공간을 갖지 않는다. + 저장할 프로퍼티를 만들어야 한다. 3. 항상 var로 정의해야 한다. (다른 프로퍼티의 값을 연산, 프로퍼티로 전달받은 값을 다른 프로퍼티에 저장하기 때문에) 연산 프로퍼티 말을 이해해보면 값을 저장하지 않고 연산을 하는 프로퍼티구나 라고 짐작해볼 수 있다. 그리고 연산 프로퍼티는 값을 저장하지 않고 연산하기 때문에 어떤 타입을 연산할지 알기 위해 타입을 명시해야 한다. 추가로 연산 이라고 하면 어떤 값을 받고 다른 프로퍼티에 넘겨줄지를 알아야 한다고 짐작할 수 있다. 우선 예시를 들어서 설명하면 ..
swift 기본문법) if let, guard let의 목적과 의미 알아보기 최근 수업을 들으면서 문법을 다시 공부하고 있다. 무심히 쓴 코드들에 대한 의미를 다시 한번 듣고 이해하면서 좋은 공부가 되어가고 있다. if le과 guard let은 Optional Binding과 연결되어 있는 개념이지만 추가적인 개념이 있어서 정리해보았다. Optional이란? 이 변수에는 값이 있을 수도 있고 없을 수도 있다.라는 의미이다. 개인적인 경험으로 optional이 왜 필요해볼까를 생각해 봤을 때, 앱이 네트워크 통신으로 값을 받을 때, 항상 값이 있다고 확신할 수 없다. optional을 사용하지 않고 변수를 선언하였는데 빈 값이 온다면? 해당 코드가 이니셜되었을 때 앱은 죽게 될 것이다. 이러한 이유 때문에 Optional 이 유용하게 사용되었다. 하지만 Optional로 처리를 ..
Swift 고차함수) flatMap, compactMap 알아보기 CompactMap func compactMap(_ transform: (Int?) throws -> ElementOfResult?) rethrows -> [ElementOfResult] Returns an array containing the non-nil results of calling the given transformation with each element of this sequence. 해당 시퀀스의 각 요소로 지정된 변환을 호출한 nil이 아닌 결과를 포함하는 배열을 반환한다. 라는 의미를 가지고 있다. 변환하는 과정에서 옵셔널 값이 생성되는 경우 해당 메서드를 통해 옵셔널이 아닌 값들을 받을 수 있다. compactMap이 옵셔널 바인딩의 기능을 가지고 있기 때문에 가능하다. let ar..
Swift lazy 알아보기 lazy 저장 프로퍼티는 처음 사용되지 전까지 초기값이 계산되지 않는 프로퍼티이다.(메모리에 올라가지 않는다.) 변수(var) 앞에 lazy를 선언함으로써 사용할 수 있다. lazy를 변수 앞에 사용해야 하는 이유?? 초기 값은 인스턴스 초기화가 완료 될 때까지 검색되지 않을 수 있기 때문에 변수로 선언해야한다. 상수(let)은 초기화가 완료되기 전에 항상 값을 가지고 있는 상태이어야 하기 떄문에 lazy로 선언할 수 없다. struct Hello { init() { print("Hello 생성") } } struct Hello2 { init() { print("Hello2 생성") } } struct Hi { var name: String //lazy //lazy 키워드를 사용하면 인스턴스 생성이 바로..
swift 고차함수 알아보기1(map, filter, reduce) 사실 고차함수에 대해서 알아보게 된 것은 swift 함수형 프로그래밍을 공부하다가 연관이 있기 때문에 넘어오게 되었다. 고차함수란? '다른 함수를 전달인자로 받거나 함수실행의 결과를 함수로 반환하는 함수'라고 한다. 스위프트에서 함수는 일급객체(일급시민)이기 때문에 함수의 전달인자로 전달할 수 있으며, 함수의 결과값으로 반환할 수 있다. 여기서 나오는 일급객체는 무엇인가?? https://declan.tistory.com/45 swift에서 일급 객체란? 알아보기 공부를 하다보면 모르는 용어가 있다. 이러한 용어들을 한번쯤은 정리하고 간다면 도움이 될 것 같다. 일급 객체란?? 다음과 같은 조건을 만족시킨다면 1급 객체라고 한다. 변수나 상수에 저장과 declan.tistory.com 오늘은 스위프트 표..
swift에서 일급 객체란? 알아보기 공부를 하다보면 모르는 용어가 있다. 이러한 용어들을 한번쯤은 정리하고 간다면 도움이 될 것 같다. 일급 객체란?? 다음과 같은 조건을 만족시킨다면 1급 객체라고 한다. 변수나 상수에 저장과 할당이 가능해야 한다. 함수의 매개변수로 사용이 가능하다. 함수(객체)에서 return이 가능하다. 다음과 같은 특징은 함수가 가지고 있고 가장 중요하게 사용되는 것 같다. 때문에 예시를 한번씩 들어보며 익혀보면 좋겠다는 생각이 들었다. 1. 변수나 상수에 저장과 할당이 가능하다. func getAge() -> Int { return 10 } var myAge = getAge() print(myAge) //10 //할당 var inputAge = getAge print(inputAge) // (Function) va..
swift enum CaseIterable, map 알아보기 enum에 CaseIterable이라는 프로토콜이 있다. 공식문서에는 A type that provides a collection of all of its values. 모든 값의 컬렉션을 제공하는 형식이라고 나타나있다. 한마디로 CaseIterable을 붙임으로써 열거형의 값들을 배열 같이 순회활 수 있도록 해주는 프로토콜이다. 간단한 예시부터 어떻게 사용할 수 있을지 고민해보도록 하겠다. enum colorCase : CaseIterable { case white case black } for i in colorCase.allCases { print(i) } enum diaryCase : CaseIterable { case aloneDiary case commentDiary case notDiaryD..

반응형