FP4 Swift에서의 렌즈(Lens) - Link 이번엔 더 복잡한 객체를 만들어 볼게요. 먼저 렌즈 함수를 다시 볼게요 struct Lens { let view: (Whole) -> Part let set: (Part, Whole) -> Whole} 스트리머의 채널정보를 알 수 있도록 속성을 하나 더 추가해 볼게요.struct Channel { let subscribers: UInt let videos: UInt} 좀 더 복잡한 객체가 되었습니다.struct Streamer { let name: String let mainPlatform: String let channel: Channel} 카더정원이라는 유튜버를 만들었습니다.let youtuber = Streamer( name: "카더정원", m.. 2025. 3. 15. Swift에서의 렌즈(Lens) - Basic 복잡한 데이터구조에서 특정구조에 접근하는 방법을 Lens라는 함수객체로 알아보도록 하겠습니다.먼저 전체에서 부분을 가져오는 함수를 만들어 보겠습니다.Whole -> Part (getter) 전체에서 부분만 수정하는 것도 필요할 거예요 (setter)Part, Whole => Whole여기서 Part => Whole가 아닌 이유는Whole에서 Part를 제외한 다른 부분은 기존의 Whole에 있던 것 그대로 있어야 하기 때문입니다. 그럼 이제 이러한 특성을 가진 함수객체 Lens를 만들어보겠습니다.//함수객체를 생성할때 get함수와 set함수를 지정해 줄 수 있습니다.struct Lens { let view: (Whole) -> Part let set: (Part, Whole) -> Who.. 2025. 3. 13. KeyPath 오늘은 KeyPath라는 것을 알아보겠습니다. KeyPath는 사실 개발하면서 현재 많이 쓰지 않는 기능이긴 하지만 SwiftUI에서 간혹 보곤 합니다. LazyVGrid(columns: columns) { ForEach(images, id: \.self) { image in Image(uiImage: image) .resizable() .scaledToFit() .frame(height: 150) } } \.self 이게 바로 KeyPath입니다. 사용해 보신 적이 있으실 겁니다. 간단한 구조체 하나를 만들면서 설명 시작하겠습니다. struct Streamer { var name: String var subscriber: Int } let streamer = Streamer(name: "nogu", s.. 2023. 1. 16. Custom Operator => 이번 시간에는 https://devamor.tistory.com/6에서 배운 연산자 만들기를 통해서 새로운 연산자를 만들도록 하겠습니다. 아래의 코드를 보면서 설명드릴게요! func increaseTwo(value: Int) -> Int { // 인수를 받아서 2을 더해서 반환하는 함수 return value + 2 } func decreaseOne(value: Int) -> Int { // 인수를 받아서 1을 빼서 반환하는 함수 return value - 1 } 사용할 때! decreaseOne(value: increaseTwo(value: 5)) // print 6 ((Int) -> Int) -> Int increaseTwo함수의 반환 값을 decreaseOne 함수에 넣어서 결괏값을 출력합니다. 매.. 2022. 12. 2. 이전 1 다음