Stacking Fire
Monad [|mɑ:nӕd;|moʊn-](철학)모나드(무엇으로도 나눌 수 없는 궁극적인 실체)Oxford Advanced Learner's English-Korean Dictionary ...왜 이 개념이 이렇게 쓰였는지는 아직 모르겠습니다. 더 공부해 보겠습니다. 컨텍스트 맥락. 어떤 위치에 어떤 값이 존재할 수 있는 맥락. 옵셔널은 맥락은 존재하지만 값이 필연적으로 존재하지는 않을 수도 있는 부분에 들어감. 값과 컨텍스트는 다르다. 그래서 옵셔널은 값을 대신할 수 없다! func add3(to int: Int) -> Int { return int + 3 } add3(to: Optional(2)) // 오류! // 값이 들어가야 하는 곳에 컨텍스트만이 들어갔다. 함수객체 함수객체란 맵을 적용할 수 있는..
map, filter, reduce는 객체에 데이터를 보내서 받는 전통적인 형태의 함수가 아닙니다. 클로저로 다른 함수를 받아 데이터셋을 변형시키는 고차 함수입니다. 옵저빙 프로퍼티와 함께 함수형 프로그래밍 '스러운' 기능을 지원하는 것입니다. 아래는 단순히 사용법이지만, 체인처럼 걸어서 사용할 수 있습니다. 맵 for-in처럼 각 요소에 특정한 행동을 수행해준 후에 그 각각 처리된 요소를 이용한 컬렉션을 만들어줍니다. 반환하지 않는 클로저를 전달하면 그냥 반복문으로 사용 가능. //긴 버전 var doubled: [Int] = numbers.map { (i: Int) -> Int in return i * 2 } print(doubled) //짧은 버전 var dbld: [Int] = numbers.ma..
옵셔널 체이닝 윗물이 맑으면 아랫물은 괜찮을 수도 있다. 체이닝의 끝은 늘 Optional! 바인딩과 함께 써 보도록 하자. 백견이 불여일RUN //옵셔널인 놈에게만 궁금증을 가진다! ash?.bag.badgeCase?.append(grayBadge) //바인딩과 함께 바인딩! if let firstBadge = ash?.bag.badgeCase?[0] { print(firstBadge) } 빠른 종료 guard let 한 코드 블럭에서 여러 개의 옵셔널을 다루어야 할 때가 있다. 쓸 때마다 언 함수, 메서드, 반복문 등 특정 블록 내에서만 사용이 가능. 반환값이 있는 함수 내에서 사용할 경우 반환값을 요구하기도 한다. func greet(person: [String: String]) { guard le..