본문 바로가기

Swift

(26)
[Swift] 모나드, 옵셔널 ! 모나드에 대한 자세한 설명 [Swift] 모나드 : 컨텍스트, 함수객체, 모나드 💡함수형 프로그래밍에서의 모나드? - 순서가 있는 연산을 처리할 때 자주 활용하는 디자인 패턴 💡프로그래밍에서 모나드가 갖춰야 할 조건 1. 타입을 인자로 받는 타입(특정 타입의 값을 포 yexjinitlog.tistory.com 이전에 모나드에 대해 자세히 설명을 했었다! 근데 저건 그냥 책에 있는 내용을 정리한 것이고 정확히 옵셔널과 모나드와의 관계에 대해 쉽게 써놓지 못한 거 같아 다시 정리해보고자 한다. 모나드? - 함수와 더불어 순서가 있는 연산을 처리할 때 자주 활용되는 디자인 패턴 및 자료구조 - 함수객체 자체이며, 값이 있을 수도 있고 없을 수도 있는 상태를 포함한 개념 📌 값이 있을 수도 있고 없을 수도 있다..
[Swift] Extension Extension - 구조체, 열거형, 클래스, 프로토콜 타입에 기능을 추가할 수 있는 기능 - 기능 추가는 가능하나, 기존 기능들은 재정의는 불가능 📌 추가할 기능 정의 extension 확장할타입이름 { } 기존에 존재하는 타입이 추가적으로 다른 프로토콜들을 채택할 수 있게도 정의 가능 extension 확장할타입이름: 프로토콜1, 프로토콜2, 프로토콜3... { /* 프로토콜 요구사항 구현 */ } 🚀 Extension 구현하기 1) Int 타입에 두개의 연산 프로퍼티 추가 (isOdd, isEven) extension Int { var isEven: Bool { return self % 2 == 10 } var isOdd: Bool { return self % 2 == 1 } } print(1.i..
[Swift] Protocol Protocol? - 특정 역할을 수행하기 위한 method, property, initializer 등의 요구사항을 정의한다. 📌 Protocol 정의 protocol 프로토콜이름 { } 📌 Protocol 구현 protocol Talk { // 1) 프로퍼티 요구 var topic: String { get set } var language: String { get } // 2) 매서드 요구 func talk() // 3) 이니셜라이저 요구 init(topic: String, language: String) } → 프로퍼티 요구에서, 꼭 var 키워드로 선언되어야 하며 get은 읽기 전용, get과 set이 함께 쓰일 경우 읽기+쓰기 모두 가능한 프로퍼티 여야한다. 💡 Protocol 을 채택한다 ? ..
[Swift] lazy? 저번 스터디에 참여하면서 스터디장님이 내주신 문제가 있었는데 7. 몬스터를 클래스로 추상화하려고 한다. MARK: 몬스터는 다음과 같은 속성들과 특징을 가지고 있다. - hp, mp, atk, level, damage - hp는 level * 50의 값을 가지고 있다. MARK: (Hint : lazy) - 각 속성들은 생성된 인스턴스에서 접근할 수 없다. - damage는 atk * level의 값을 반환하는 읽기 전용 변수이다. MARK: 몬스터는 다음과 같은 스킬을 가지고 있다. - attack(enemy: Monster) - enemy에게 damage를 입힌다. - checkMyHp() - 객체의 hp를 출력한다. - getDamage(damage: Int) - 받은 damage만큼 체력이 감소된..
[Swift] Any / AnyObject 전 포스팅인 타입캐스팅에 이어서 Any / AnyObject 에 대한 포스팅을 해보겠다악 악 이전 포스팅 [Swift] 타입캐스팅 : is, as 💡 타입캐스팅? - 인스턴스의 타입을 확인하거나 인스턴스를 같은 계층(hierachy)에 있는 다른 superclass나 subclass로 취급하는 방법 is Checking Type 말 그대로, 특정 인스턴스의 타입을 확인할 수 있는 yexjinitlog.tistory.com 타입캐스팅은 일반적으로 상속관계에 있는 클래스끼리 가능하지만, Any / AnyObject 타입을 이용할 경우, 상속관계에 상관없이 타입캐스팅이 가능하다 1️⃣ Any - 모든 타입을 저장할 수 있게 해주는 타입 var anyThings: [Any] = [] anyThings.appen..